AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

programm, das ein programm bedient?

Ein Thema von toredo · begonnen am 6. Jun 2006 · letzter Beitrag vom 21. Jun 2006
Antwort Antwort
Seite 1 von 2  1 2      
toredo

Registriert seit: 6. Apr 2006
Ort: Oberriet
210 Beiträge
 
Delphi 7 Enterprise
 
#1

programm, das ein programm bedient?

  Alt 6. Jun 2006, 20:01
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
Benj Meier
  Mit Zitat antworten Zitat
Benutzerbild von arbu man
arbu man

Registriert seit: 3. Nov 2004
Ort: Krefeld
1.108 Beiträge
 
Delphi 7 Professional
 
#2

Re: programm, das ein programm bedient?

  Alt 6. Jun 2006, 20:07
Du btauchst erst mal das Fenster Handle such mal nach FindWindow der rest ist dann einfach da sollte ein api tutorial helfen
Björn
>> http://bsnx.net <<
Virtual DP Stammtisch v1.0"iw" am 19.09.2007 - ich war dabei!
  Mit Zitat antworten Zitat
toredo

Registriert seit: 6. Apr 2006
Ort: Oberriet
210 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: programm, das ein programm bedient?

  Alt 6. Jun 2006, 20:25
hay,

zu dem stichwort findwindows hab ich unter dsdt was gefunden:
Delphi-Quellcode:
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;
aber wo kommt da der code rein der für das fenster gillt, falls es existiert?
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
Benj Meier
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#4

Re: programm, das ein programm bedient?

  Alt 6. Jun 2006, 20:32
MSDN-Library durchsuchenFindWindow ist eigentlich eie API-Funktion - aber so wirds wahrscheinlich auch gehen

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. MSDN-Library durchsuchenBM_CLICK

Für ne Combobox oder ne Checkbox weis ich jetzt grad' nicht, müsste aber auf jeden Fall im msdn stehen

Also eigentlich ganz einfach

(Wenn man jetzt noch Vieren davon abhalten könnte, dein Antivirus-Prog so fernzusteuern ... ^^)

Also mal kurz geguckt:

Button: http://msdn.microsoft.com/library/de...s/bm_click.asp

ComboBox: http://msdn.microsoft.com/library/de...lectstring.asp

CheckBox: Ist auch nur ein Button
  Mit Zitat antworten Zitat
Benutzerbild von arbu man
arbu man

Registriert seit: 3. Nov 2004
Ort: Krefeld
1.108 Beiträge
 
Delphi 7 Professional
 
#5

Re: programm, das ein programm bedient?

  Alt 6. Jun 2006, 20:37
Delphi-Quellcode:
procedure TForm1.Button1Click(sender: TObject);
var TheWindowHandle: THandle;
begin
  TheWindowHandle:=FindAWindow('Title', '');
  if TheWindowHandle=0 then
    ShowMessage('Window not found!')
  else
    BringWindowToTop(TheWindowHandle);
end;
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).
Auf jeden fall ist ein api tutorial wie das von luckie hilfreich.
Björn
>> http://bsnx.net <<
Virtual DP Stammtisch v1.0"iw" am 19.09.2007 - ich war dabei!
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#6

Re: programm, das ein programm bedient?

  Alt 6. Jun 2006, 21:00
Wenns zum automatischen Programmtest ist: TestComplete
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
toredo

Registriert seit: 6. Apr 2006
Ort: Oberriet
210 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: programm, das ein programm bedient?

  Alt 7. Jun 2006, 17:10
wow, das wird ja immer kompilizierter

Zitat von arbu man:
Delphi-Quellcode:
procedure TForm1.Button1Click(sender: TObject);
var TheWindowHandle: THandle;
begin
  TheWindowHandle:=FindAWindow('Title', '');
  if TheWindowHandle=0 then
    ShowMessage('Window not found!')
  else
    BringWindowToTop(TheWindowHandle);
end;
Wo Title steht setzt du den Title des ProgrammFensters ein....
bis hier hin versteh ich das ganze noch so halbwegs.


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
Benj Meier
  Mit Zitat antworten Zitat
Benutzerbild von arbu man
arbu man

Registriert seit: 3. Nov 2004
Ort: Krefeld
1.108 Beiträge
 
Delphi 7 Professional
 
#8

Re: programm, das ein programm bedient?

  Alt 7. Jun 2006, 18:10
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
Björn
>> http://bsnx.net <<
Virtual DP Stammtisch v1.0"iw" am 19.09.2007 - ich war dabei!
  Mit Zitat antworten Zitat
toredo

Registriert seit: 6. Apr 2006
Ort: Oberriet
210 Beiträge
 
Delphi 7 Enterprise
 
#9

Re: programm, das ein programm bedient?

  Alt 7. Jun 2006, 19:26
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
Benj Meier
  Mit Zitat antworten Zitat
Benutzerbild von inherited
inherited

Registriert seit: 19. Dez 2005
Ort: Rosdorf
2.022 Beiträge
 
Turbo Delphi für Win32
 
#10

Re: programm, das ein programm bedient?

  Alt 7. Jun 2006, 19:51
Schau mal im Tutorial-Bereich
Nikolai Wyderka

SWIM SWIM HUNGRY!
Neuer Blog: hier!
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:58 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz