Archiv verlassen und diese Seite im Standarddesign anzeigen : SendMessage zu anderem process
Wolfkiller
01.12.2007, 00:35
also ich will ein programm schreiben das in einem anderen process eine menuauswahl trifft oder ein button klick ohne das die wirklich gescheit !
also mein quellcode is bisher einfach
#include <windows.h>
using namespace std;
int main()
{
HWND hWindow=FindWindow(NULL,"Test");
SendMessageA(hWindow,WM_MENUSELECT,0,0);
}
allerdings wird hier halt nich angegeben welches menuitem den angeklickt wurde.
wie kan ich das festlegen ??
und wie kann ich etwas auf diese weise in eine editbox eintragen lassen ?
also das z.B. in einem login fenster die logindaten durch mein programm angegeben werden ..
Guck dir in der MSDN mal die APIs SetWindowText(A/W), SendDlgItemMessage(A/W) bzw. SendMessage(A/W) in Kombination mit der Message WM_SETTEXT an. :)
Noch was, ich würde bei FindWindow mindestens noch den Klassennamen hinzufügen (evtl. gibt es mehrere Windows mit demselben Namen).
Wolfkiller
01.12.2007, 14:17
so sollte es jetzt die EditBox ansprechen ...
HWND hWindow=FindWindow(NULL,"Minimizer");
HWND hEditBox=GetDlgItem(hWindow,1);
SendMessage(hEditBox,WM_SETTEXT, 0, 0);
aber wen ich SendMessage(hEditBox,WM_SETTEXT,0,"Test");
invalid conversion from `const char*' to `LPARAM'
initializing argument 4 of `LRESULT SendMessageA(HWND__*, UINT, WPARAM, LPARAM)'
also meine frage hierzu wie bekomme ich den text in LPARAM ???
( fals das pber eine LPARAM struktur läuft währe es net wenn diese mit erklärung gepostet würde ^_^ )
und ich habe den Minimizer mit IBasic erstellt und jetzt weis ich net was da der klassenname is :oops:
( noch ne frage am rande ... wen ich tuts suche und die beispiele copy-paste warum spämt der kompiler mich dan immer mit fehlern ?? )
invalid conversion from `const char*' to `LPARAM'
initializing argument 4 of `LRESULT SendMessageA(HWND__*, UINT, WPARAM, LPARAM)'
Das Ganze sollte so kompilierbar sein:
char *MyText = "Test";
SendMessage(hEditBox, WM_SETTEXT, 0, (LPARAM)MyText);
Ich hoffe, es klappt nun.
Wolfkiller
03.12.2007, 12:00
zu kompilieren geht es jetzt
aber es ging trotzdem nicht deswegen habe ich ein paar if abfragen eingebaut um zu testen wo evl ein fehler liegt ...
#include <windows.h>
using namespace std;
int main()
{
HWND hWindow=FindWindow(NULL,"Minimizer");
if(NULL==hWindow)
{
MessageBoxA(NULL,"Caption","-.-",MB_OK);
}
HWND hEditBox=GetDlgItem(hWindow,2);
if(NULL==hEditBox)
{
MessageBoxA(NULL,"EditBox","-.-",MB_OK);
}
char *MyText = "Test";
SendMessageA(hEditBox, WM_SETTEXT, 0, (LPARAM)MyText);
}
immer wen ich das programm starte kommt die messagebox die anzeigt das die EditBox nicht gefunden wurde :'(
( an einer falschen id kann es eig nicht liegen da ich den Minimizer selbst programmiert habe [ mit IBasic ] ) und bei der 2ten editbox die dabei is geht es auhc nicht :'(
wen ich SendMessage(hWindow,WM_SETTEXT,0,/LPARAM)MyText);
mache wird di Caption vom Minimizer geändert ...
danke für deine bisherige hilfe ^_^
Kann es evtl. sein, dass das "Minimizer"-Window gar kein modaler Dialog ist? Wenn nicht, wäre Enumerate(Child)Windows ein Weg, anzusetzen (das geht dann auch bei Dialogen).
Powered by vBulletin® Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.