kostenloser Webspace werbefrei: lima-city


Übergabe..

lima-cityForumProgrammiersprachenC/C++ und D

  1. Autor dieses Themas

    itchydiemaus

    itchydiemaus hat kostenlosen Webspace.

    Hallo,

    Kann mir jemand bei einem schwierigen problem helfen?

    Und zwar will ich ein programm schreiben damit ein anderes programm automatisch startet, Strg + m und dann im Dursuchenfenster etwas automatisch ohne manuellen eingaben durchf?hrt...

    Hat jemand eine ahnung wie ich in C++ so etwas machn kann??

    mfg und mit Dank im Voraus

    Itchy die Maus
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. 0******a

    Das kannst du in mehreren Schritten mit der WinAPI machen. Als erstes muss dein Programm das fremde Programm starten. Am besten mit _spawnlp() und _P_NOWAIT als Mode-Parameter. Danach sucht dein Programm den Windowhandle des gerade gestarteten Programmes mit EnumWindows(). In der Callbackfunktion von EnumWindows kannst du zum Beispiel den Fenstertitel des gestarteten Programmes benutzen, um das gesuchte Fenster eindeutig zu identifizieren. Mit dem gefundenen Windowshandle suchst du nun nach den Windowshandles der betreffenden Eingabefenster des gestarteten Programmes. Dazu benutzt du EnumChildWindows(). In der Callbackfunktion von EnumChildWindows() solltest du die ID des gesuchten Steuerelements benutzen, da diese eindeutig ist. Die IDs bekommst du mit GetDlgCtrlID(). Die IDs, die du zum Vergleichen brauchst, kannst du mit bestimmten Programmen herausfinden, zum Beispiel MS Spy++, das Teil des Visual Studio Paketes ist. Wenn du nun die betreffenden Steuerelemente gefunden hast, kannst du anfangen, dem anderen Programm die gew?nschten Nachrichten zu senden. Das machst du mit der Funktion SendMessage(). Mit dieser Funktion kannst du alle Aktionen simulieren. Als Parameter braucht diese Funktion vor allem das betreffende Windowhandle, was der Grund ist, warum wir die vorher suchen mussten. Schick nun mit SendMessage() an das Hauptfenster deinen STRG+M-Befehl. Das passiert in mehreren Schritten, wobei immer SendMessage() und das entsprechende Windowhandle benutzt wird. Um die Eingabe zu simulieren, musst du die Nachrichten WM_SYSKEYDOWN, WM_KEYDOWN, WM_CHAR, WM_KEYUP und WM_SYSKEYUP nacheinander senden. Manche Programme geben sich mit weniger zufrieden, kommt darauf an, wie genau sie programmiert worden sind. Welche Werte die anderen Parameter von SendMessage() annehmen m?ssen, kannst du der MSDN-Doku zu den entsprechenden WM_-Nachrichten entnehmen. Das gleiche (aber ohne WM_SYSKEYDOWN und WM_SYSKEYUP) machst du dann mit dem Windowhandle des Steuerelements, wo du sonst was reinschreibst. Du schickst also f?r jeden einzelnen Buchstaben, den du sonst reinschreibst 3 Nachrichten (WM_KEYDOWN, WM_CHAR und WM_KEYUP) mit den entsprechenden Parametern, damit die von dir gew?nschten Buchstaben als Nachricht ?bertragen werden. Zum Abschluss musst du wahrscheinlich auf irgendeinen Button klicken, was ich als das weitere Steuerelement angenommen habe, dessen Windowshandle bereits rausgesucht wurde. An dieses Windowhandle sendest du mit SendMessage() dann einfach erst WM_LBUTTONDOWN und WM_LBUTTONUP, was einen Mausklick simuliert. Benutze dann als Parameter bei SendMessage (das stellt in diesem Falle die Klick-Koordinaten dar) einfach so was wie 1/1.
    Falls dir das alles zu viel oder zu kompliziert ist, solltest du mal nach fertigen L?sungen schauen. Die sind zwar nicht so flexibel, aber mit der richtigen Konfiguration sollte da auch alles zufriedenstellend funktionieren. Eine, die ich zwar kenne, selbst aber noch nie benutzt habe, w?re RemoteKeys (oder so ?hnlich. Google mal danach). Fragen zu solchen Programmen bitte nicht hier stellen.
  4. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!