C Windowsfenster prüfen mit rückgabe

Bl4ckFir3

Cadet 3rd Year
Registriert
Jan. 2011
Beiträge
41
Hallo,

Ich möchte damit, z.B. den Windows Rechner öffnen und gleichzeitig prüfen und ausgeben lassen ob dieser Aktiv ist. Dabei öffnet er mir zwar das Programm, aber gibt mir immer nur den Satus ERROR aus. (Programiersprache C) Hatt vllt. einer eine Idee woran es liegen kann?
Desweiteren noch eine kleine Frage. Er soll mir seine Ausgabe gleichzeitig in eine txt. Datei speichern, wie stellt man das am schlausten an?

EDIT: Habe es nun so gelöst: Weis einer wie ich da nun noch die Ausgabe Speichern kann, in eine txt.?
Code:
  int test = ShellExecute(NULL, NULL, "C:\\WINDOWS\\system32\\calc.exe", NULL, NULL, SW_SHOWNORMAL);
     Sleep(3000);
  if(test > 32)
  {
      printf("Autostartprogramm1 Satus: OK\n");
  }
  if(test <32)
  {
      printf("Autostartprogramm1 Satus: ERROR\n");
Gruss
 
Zuletzt bearbeitet:
FindWindow erwartet nicht den Dateinamen, sondern den Klassen- bzw. Fenstertitelnamen. Öffne mal Spy++, öffne die Fenstersuche und zieh mal mit dem Fadenkreuz auf den Taschenrechner. Anschließend siehst du folgendes Fenster:
spypp-window-search-png.216534

Du siehst dann einerseits den Klassennamen (CalcFrame) und andererseits den Fenstertitel (Rechner). Wenn du nun nach dem Klassennamen suchst (was ich dir empfehlen würde, denn schließlich kann der Fensternamen immer abweichen), machst du folgendes:
Code:
HWND h = FindWindow( L"CalcFrame", NULL );
Falls du nach dem Titel suchst, muss in den ersten Parameter natürlich NULL und in den zweiten L"Rechner". Aber das findest du auch im MSDN.

edit zu deinem edit:

Such mal nach fopen, fwrite und fclose im MSDN.
 

Anhänge

  • spypp-window-search.png
    spypp-window-search.png
    25,7 KB · Aufrufe: 290
Wäre es nicht sinnvoller/eleganter, mit der API-Funktion WaitForSingleObject (oder einer anderen Funktion in deren Umfeld) zu arbeiten? Diese Funktion startet einen Prozeß oder ein Programm und wartet dann solange, bis die Wartezeit um ist oder - was in diesem Fall zutreffender wäre - bis der gestartete Prozeß beendet wird.
 
Zuletzt bearbeitet:
Hallo,

danke für eure schnellen Antworten.
Wie ich es nun gelöst habe könnt ihr von meinen EDIT oben entnehmen.
Wusel mich grad mal durch die Befehle
Code:
fopen, fwrite und fclose
.

Vllt. hat einer von euch ja ein passendes Beispiel für mein Code oben.
 
Code:
FILE *f = fopen( "test.txt", "w" ); // öffnen
char[] buf = "Autostartprogramm1 Satus: OK\n";
fwrite( buf, sizeof( char ), strlen( buf ), f ); // schreiben
fclose( f ); // schließen
Alternativ kannst du natürlich auch mit fstream arbeiten.
 
Zurück
Oben