Ausgabe in ein Programm leiten

Programmiersprachen, APIs, Bibliotheken, Open Source Engines, Debugging, Quellcode Fehler und alles was mit praktischer Programmierung zu tun hat.
Antworten
INe5xIlium(Freak5)
Beiträge: 32
Registriert: 29.07.2002, 11:43

Ausgabe in ein Programm leiten

Beitrag 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.
joggel

Re: Ausgabe in ein Programm leiten

Beitrag von joggel »

Warum return?
Was willst Du genau machen?
INe5xIlium(Freak5)
Beiträge: 32
Registriert: 29.07.2002, 11:43

Re: Ausgabe in ein Programm leiten

Beitrag 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:
joggel

Re: Ausgabe in ein Programm leiten

Beitrag von joggel »

Ich habe mir mal gerade den anderen Thread durchgelesen... .
Also mit "programmXY.exe > text.txt" gings nicht?
INe5xIlium(Freak5)
Beiträge: 32
Registriert: 29.07.2002, 11:43

Re: Ausgabe in ein Programm leiten

Beitrag 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.
Antworten