Seite 1 von 1

Ausgabe in ein Programm leiten

Verfasst: 05.10.2010, 17:08
von INe5xIlium(Freak5)
Ich habe mal eine Lösung angehängt, wie ich momentan die Fehler bearbeite, die ein shell Programm auswirft. Gibt es eine Möglichkeit die VK_RETURN events direkt an die shell zu schicken? Momentan hab ich etwas Angst, dass das Programm amok läuft, sobald ich aus Versehen mal woanders hinklicke.

Code: Alles auswählen

htlatex 00_TexNotes.tex | tex4htWorkaround.exe

Code: Alles auswählen

int main()
{
string buffer;

while (getline(cin, buffer)) 
{ keybd_event(VK_RETURN,   0, 0, 0); 
  keybd_event(VK_RETURN,   0, KEYEVENTF_KEYUP, 0); 
}
keybd_event(VK_RETURN,   0, KEYEVENTF_KEYUP, 0); 
return 0;
}
Vista/C++/Latex

Edit:
Sendmessage hat scheinbar nicht funktioniert, genausowenig wie diese Version. Ich muss mal überprüfen, ob ich überhaupt das richtige Windowhandle bekomme...

Code: Alles auswählen

HWND hwnd = FindWindow("ConsoleWindowClass",NULL); 
//HWND hwnd = GetConsoleWindow();
if(hwnd==0)
{
	MessageBox(0,(LPCSTR)"Kein Fenster gefunden",(LPCSTR)"ERROR",0);
	return 0;
}
fstream Ausgabe("tex4htw.txt",ios::out);
string buffer;

while (getline(cin, buffer)) 
{ 
Ausgabe<<buffer<<endl;
cout<<buffer<<"-e-"<<endl;
SetFocus(hwnd);

keybd_event(VK_RETURN,   0, 0, 0); 
keybd_event(VK_RETURN,   0, KEYEVENTF_KEYUP, 0); 
}
keybd_event(VK_RETURN,   0, KEYEVENTF_KEYUP, 0); 

return 0;
}
Edit2: SetForegroundWindow(hwnd); hat jetzt den gewünschten Effekt, dass die Enterzeichen nicht in ein falsches Fenster kommen. Aber richtig arbeiten kann ich dann mit dem PC auch nicht mehr.

Re: Ausgabe in ein Programm leiten

Verfasst: 06.10.2010, 10:41
von joggel
Warum return?
Was willst Du genau machen?

Re: Ausgabe in ein Programm leiten

Verfasst: 06.10.2010, 11:08
von INe5xIlium(Freak5)
Ich reagiere auf sehr viele Fehlermeldungen ^^ Das hier ist eigentlich die C++ Lösungsmöglichkeit für das Problem "unstoppable Batch". Wenn ich das nicht einfach lösen kann und das Programm VK_RETURN will, dann kriegt es VK_Return :twisted:

Re: Ausgabe in ein Programm leiten

Verfasst: 06.10.2010, 11:19
von joggel
Ich habe mir mal gerade den anderen Thread durchgelesen... .
Also mit "programmXY.exe > text.txt" gings nicht?

Re: Ausgabe in ein Programm leiten

Verfasst: 06.10.2010, 11:21
von INe5xIlium(Freak5)
Damit leite ich doch nur die Ausgabe in eine Textdatei, hängen bleibt er dann dort, wo er auf eine Eingabe wartet? Der Effekt von programmXY.exe >text.txt ist nur, dass ich nichtmal mehr sehen kann, wann ich Return drücken muss.

Und mit programmXY.exe < text.txt
ging es nicht, weil das zusammen mit weiteren Aufrufen des Programms zu Seiteneffekten kommt (interessant wäre warum...). Auf alle fälle beendet sich dadurch das Programm vorzeitig, nachdem ein paar Aufrufe fehlschlagen.