![]() |
programm, das ein programm bedient?
hay,
ich muss bzw. möchte ein programm schreiben, dass auf befehl eine exe im hintergrund startet und bei der dann bei ner checkbox das häckchen setzt, dann bei ner combobox ein anderes item auswählt und dann wieder das häckchen bei der checkbox entfernt. schlussendlich muss es dann noch auf übernehmen und ok klicken. ich hoffe das ist realisierbar, ansonsten ists auch ned soo schlimm, aber es wäre schon geil. mfG toredo |
Re: programm, das ein programm bedient?
Du btauchst erst mal das Fenster Handle such mal nach FindWindow der rest ist dann einfach da sollte ein api tutorial helfen
|
Re: programm, das ein programm bedient?
hay,
zu dem stichwort findwindows hab ich unter dsdt was gefunden:
Delphi-Quellcode:
aber wo kommt da der code rein der für das fenster gillt, falls es existiert?
type
PFindWindowStruct = ^TFindWindowStruct; TFindWindowStruct = record Caption: string; ClassName: String; WindowHandle: THandle; end; function EnumWindowsProc(hWindow: hWnd; lParam: LongInt): boolean; stdcall; var lpBuffer: PChar; WindowCaptionFound: boolean; ClassNameFound: boolean; begin GetMem(lpBuffer, 255); result:=true; WindowCaptionFound:=false; ClassNameFound:=false; try if GetWindowText(hWindow, lpBuffer,255)>0 then if Pos(PFindWindowStruct(lParam).Caption, StrPas(lpBuffer))>0 then WindowCaptionFound:=true; if PFindWindowStruct(lParam).ClassName='' then ClassNameFound:=true else if GetClassName(hWindow, lpBuffer, 255)>0 then if Pos(PFindWindowStruct(lParam).ClassName, StrPas(lpBuffer))>0 then ClassNameFound:=true; if (WindowCaptionFound and ClassNameFound) then begin PFindWindowStruct(lParam).WindowHandle:=hWindow; result:=false; end; finally FreeMem(lpBuffer, sizeof(lpBuffer^)); end; end; function FindAWindow(WinCaption: string; WinClassName: string): THandle; var WindowInfo: TFindWindowStruct; begin with WindowInfo do begin caption := WinCaption; className := WinClassName; WindowHandle := 0; EnumWindows(@EnumWindowsProc, LongInt(@WindowInfo)); result := WindowHandle; end; end; procedure TForm1.Button1Click(sender: TObject); var TheWindowHandle: THandle; begin TheWindowHandle:=FindAWindow('Netscape -', ''); if TheWindowHandle=0 then ShowMessage('Window not found!') else BringWindowToTop(TheWindowHandle); end; und den code für das "fremde" fenster kann ich auch normal benutzen z.b. combobox1.text:='blabla';, aber ich weiss bei dem fenster ja nicht wie die objekte heissen. ich weiss nicht mal in welcher sprache das programm gecodet wurde... mfG toredo |
Re: programm, das ein programm bedient?
![]() Du musst im Grunde Die richtigen Controls finden (FindWindow & Co) und dann die richtige Message schicken (Send/PostMessage). Für nen Button wäre dass bspw. ![]() Für ne Combobox oder ne Checkbox weis ich jetzt grad' nicht, müsste aber auf jeden Fall im msdn stehen :mrgreen: Also eigentlich ganz einfach :zwinker: (Wenn man jetzt noch Vieren davon abhalten könnte, dein Antivirus-Prog so fernzusteuern ... ^^) Also mal kurz geguckt: Button: ![]() ComboBox: ![]() CheckBox: Ist auch nur ein Button ;) |
Re: programm, das ein programm bedient?
Delphi-Quellcode:
Wo Title steht setzt du den Title des ProgrammFensters ein. Dann hast du in TheWindowHandle das Handle des Fensters dann musst du noch mit EnumChildWindows die Unter fenster auflisten, auch eine combobox ist ein fenster! es gibt auch eine api funktion um die caption herruaszu finden (foren suche) damit könntest du die caption der checkbox herraus finden und dann suchen wie man eine checkbox über api setzt. alles ohne gewähr (aber mit pistole).
procedure TForm1.Button1Click(sender: TObject);
var TheWindowHandle: THandle; begin TheWindowHandle:=FindAWindow('Title', ''); if TheWindowHandle=0 then ShowMessage('Window not found!') else BringWindowToTop(TheWindowHandle); end; Auf jeden fall ist ein api tutorial wie das von luckie hilfreich. |
Re: programm, das ein programm bedient?
Wenns zum automatischen Programmtest ist:
![]() |
Re: programm, das ein programm bedient?
wow, das wird ja immer kompilizierter :o
Zitat:
das prob ist auch noch ich kann die exe zuhause ned ausführen, da man dazu ein programm auf dem pc bräuchte, das ich aber nicht habe und es wäre auch ned legal, ne raubkopie zu machen. aber vielleicht kann man ja aus der exe heraus diese daten lesen, vielleicht mit nem resource hacker oder so was? vielleicht könnte mri die function auch jemand machen, ich würde dieser person auch was als gegenleistung geben. mfG toredo |
Re: programm, das ein programm bedient?
Mit einen Res Hacker geht da auch nicht viel Handles werden dyn. erstellt d.h. bei jeden start hast du andere Handles
Es sei denn die Formulardaten stehen in der exe dann ist es einfach |
Re: programm, das ein programm bedient?
hat jemand zufälligerwiese ein beispiel oder ein tut für das ganze?
also die funktion um das fenster zu finden schaff ich wahrscheinlich noch aber den rest ned... mfG toredo |
Re: programm, das ein programm bedient?
Schau mal im Tutorial-Bereich ;)
:corky: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:20 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz