Welenreiter Geschrieben 16. Dezember 2003 Geschrieben 16. Dezember 2003 Hallo Leute, ich öffne über eine WinApi aus meiner Application heraus MS Word. Gibt es auch ein API mit dem ich es wieder schließen kann ?
Klotzkopp Geschrieben 16. Dezember 2003 Geschrieben 16. Dezember 2003 Wie öffnest du es denn? Bei CreateProcess bekommst du ein HANDLE, wenn du die Automatisierungsschnittstelle benutzt, hast du einen Dispatch-Zeiger. Ansonsten: Anwendungsfenster suchen und WM_CLOSE hinschicken.
Welenreiter Geschrieben 16. Dezember 2003 Autor Geschrieben 16. Dezember 2003 Original geschrieben von Klotzkopp Ansonsten: Anwendungsfenster suchen und WM_CLOSE hinschicken. Ich öffne es mit WinExec hast du zu dem Anwendungsfenster suche und WM_close vielleicht ein Codebeispiel ??
Welenreiter Geschrieben 18. Dezember 2003 Autor Geschrieben 18. Dezember 2003 Kann mir einer ein Beispiel für den CLOSE Befehl schicken ?? Ich kriege das ürgendie nicht hin. Es Funktioniert bei mir einfach nicht.
Klotzkopp Geschrieben 18. Dezember 2003 Geschrieben 18. Dezember 2003 "Funktioniert nicht" ist keine Fehlerbeschreibung. Zeig uns deinen Code, und sag genau, was nicht funktioniert (Compilerfehler, Laufzeitfehler, etc).
Welenreiter Geschrieben 18. Dezember 2003 Autor Geschrieben 18. Dezember 2003 Original geschrieben von Klotzkopp Wie öffnest du es denn? Bei CreateProcess bekommst du ein HANDLE, wenn du die Automatisierungsschnittstelle benutzt, hast du einen Dispatch-Zeiger. Ansonsten: Anwendungsfenster suchen und WM_CLOSE hinschicken. Ich mache keinen Create Prozess ich starte das Fenster mit dem WinExec API. Mein Problem ist ich weiss nicht was GENAU ich Programmieren muss um es wieder zu schließen. Ich brauchte dafür ein genaues Beispiel. Zum Programmieren selbst benutze ich Advantage Plex mit einem C++ Compiler. Da ich da keinen C++ Code habe kann ich auch keinen Posten.
Klotzkopp Geschrieben 18. Dezember 2003 Geschrieben 18. Dezember 2003 Original geschrieben von Welenreiter Ich brauchte dafür ein genaues Beispiel. ... Da ich da keinen C++ Code habe kann ich auch keinen Posten. Das verstehe ich nicht. Was bringt dir ein genaues C++-Beispiel, wenn du gar keinen C++-Code hast?
Welenreiter Geschrieben 18. Dezember 2003 Autor Geschrieben 18. Dezember 2003 Mit folgendem Code versuche ich das Fenster zu schließen #include <winuser.h> LRESULT SendMessage(&(1:),"WM_Close",0,0); es funktioniert aber nicht. Wie kann ich ihm sagen das genau dass von mir geöffnete Word Fenster wieder geschlossen werden soll ?
Klotzkopp Geschrieben 18. Dezember 2003 Geschrieben 18. Dezember 2003 Indem du SendMessage als ersten Parameter das Fensterhandle des Word-Fensters übergibst. Das musst du natürlich erst mal mit FindWindow(Ex) rausfinden. Der zweite Parameter muss WM_CLOSE sein, nicht "WM_Close". Außerdem sieht das nicht nach einem Aufruf aus.
Welenreiter Geschrieben 18. Dezember 2003 Autor Geschrieben 18. Dezember 2003 Original geschrieben von Klotzkopp Indem du SendMessage als ersten Parameter das Fensterhandle des Word-Fensters übergibst. Das musst du natürlich erst mal mit FindWindow(Ex) rausfinden. Wie benutze ich jetzt die FindWindow(ex) Funktion genau ?? Kannst du mir dafür ein kurtzes Code beispiel schicken ?
Klotzkopp Geschrieben 18. Dezember 2003 Geschrieben 18. Dezember 2003 Original geschrieben von Welenreiter Wie benutze ich jetzt die FindWindow(ex) Funktion genau ?? Wenn man sich die Zeitspanne zwischen den Beiträgen ansieht, hast du nicht versucht, dir diese Information selbst zu beschaffen. Kannst du mir dafür ein kurtzes Code beispiel schicken ? Im Allgemeinen erhöht sich die Hilfsbereitschaft der Anderen, wenn man ein wenig Eigenleistung erkennen lässt. Ich helfe dir gern bei Problemen, aber für so was habe ich keine Zeit.
MeisterB Geschrieben 18. Dezember 2003 Geschrieben 18. Dezember 2003 Eigentlich is es ganz einfach man muss nur wissen wie: Finde Handle durch Fensterbeschriftung: HWND HandleZuWord=FindWindow(0,"Dokument1 - Microsoft Word"); Finde Handle durch Klassenname (z.B. mit Spy++ ermitteln): HWND HandleZuWord=FindWindow("OpusApp",0); Beenden kannst du es so PostMessage(HandleZuWord,WM_CLOSE,0,0); Oder du killst es: DWORD ProzessID; GetWindowThreadProcessId(HandleZuWord,&ProzessID); HWND HandleZumToeten=OpenProcess(PROCESS_ALL_ACCESS, false, ProzessID); HandleZumToeten= TerminateProcess(HandleZumToeten, 0); CloseHandle(HandleZumToeten); Falls du noch irgendwelche Fragen hast einfach posten!
bigpoint Geschrieben 19. Dezember 2003 Geschrieben 19. Dezember 2003 Original geschrieben von MeisterB Eigentlich is es ganz einfach man muss nur wissen wie: wie alles im Leben
MeisterB Geschrieben 19. Dezember 2003 Geschrieben 19. Dezember 2003 Wie kann ich eigentlich für einen TExplorerButton einen Click per API ausführen? das normale PostMessage(HandleDazu,WM_CLICK,0,0); funktioniert hier nicht!
Klotzkopp Geschrieben 19. Dezember 2003 Geschrieben 19. Dezember 2003 Gibt es WM_CLICK überhaupt? IIRC heißt die Nachricht BM_CLICK...
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden