Entwickler-Ecke

Windows API - externe Programme mit der Window Position (0|0) starten


myLord - Mi 29.06.05 10:57
Titel: externe Programme mit der Window Position (0|0) starten
Hallo,

ich habe ein Programm geschrieben, dass ein anderes aufrufen soll. Nun habe ich das Problem, dass das eigentliche Programm in dem aufgerufenen Programm bestimmte Sachen mit der Maus machen soll. z.B. soll Paint aufgerufen werden und eine Blume gezeichnet werden. In Paint ist es noch kein Problem, da man es im Vollbildmodus starten kann, aber es gibt andere Programme, die kein Vollbild zulassen. Sagen wir mal der Windows eigene Taschenrechner in dem was vorgerechnet werden soll. Mit


Delphi-Quelltext
1:
ShellExecute (Handle, NIL, PCHAR('calc.exe'), NILNIL, SW_SHOWNORMAL);                    


wird der Taschenrechner aufgerufen, leider ist er bei jedem Aufruf an einer andren Stelle. Gibt es nun eine Möglichkeit, dass das Programm in der linken oberen Ecke gestartet wird, also (0|0)?

Moderiert von user profile iconmatze: Code- durch Delphi-Tags ersetzt.
Moderiert von user profile iconTino: Topic aus Dateizugriff verschoben am Mi 29.06.2005 um 13:52


direction4delphi - Mi 29.06.05 11:02

WINAPI Funktion
SetWindowPlacement mit dem Handle des zu setztenden Fensters

MFG
MILLI


Delete - Mi 29.06.05 11:54

Suche im MSDN SETWINDOWPOS.


myLord - Do 30.06.05 12:05

aber wo bekomm ich denn das Handle des fensters her, dass ich mit delphi aufgerufen habe?


jaenicke - Do 30.06.05 12:14

FindWindow bzw. FindWindowEx


direction4delphi - Do 30.06.05 12:17

Function FindWindow


Syntax

HWND FindWindow(LPCTSTR lpClassName,LPCTSTR lpWindowName);


mfg
MILLI


jaenicke - Do 30.06.05 12:23

user profile icondirection4delphi hat folgendes geschrieben:
Function FindWindow


Syntax

HWND FindWindow(LPCTSTR lpClassName,LPCTSTR lpWindowName);


mfg
MILLI

In C-Syntax???
Ob ihm das hilft?!?


direction4delphi - Do 30.06.05 12:46

user profile iconjaenicke hat folgendes geschrieben:
user profile icondirection4delphi hat folgendes geschrieben:
Function FindWindow


Syntax

HWND FindWindow(LPCTSTR lpClassName,LPCTSTR lpWindowName);


mfg
MILLI

In C-Syntax???
Ob ihm das hilft?!?


Dachte das sollte doch verständlich sein aber einfacher gehts auch


Delphi-Quelltext
1:
FindWindow(nil,PChar('FensterTitel'));                    


Hoffe es ist so besser verständlich

mfg
MILLI


jaenicke - Do 30.06.05 12:53

Was ich nur meinte ist: Wer LPCTSTR noch nie gesehen hat, der hat keine Ahnung, was das ist (@myLord: PChar), auch wenn klar sein sollte, dass es sich um den Variablen-Typ handelt, selbst wenn man C++ nicht kennt.


myLord - Do 30.06.05 13:16

hmm... dann sollte der folgende Code doch den Windows Taschenrechner aufrufen, das Handle des Fensters suchen, als ontop und mit der Position 0,0 versehen, oder?


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
procedure TForm1.Button1Click(Sender: TObject);
var 
  hApp: HWND;
begin
ShellExecute (Handle, NIL, PCHAR('calc.exe'), NILNIL, SW_SHOWNORMAL);
hApp:=FindWindow(nil,PChar('Rechner'));
SetWindowPos(hApp, HWND_TOPMOST, 00, Width,
             Height, SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE);
end;


nur leider geht das nicht


Delete - Do 30.06.05 13:21

SWP_NOMOVE

Denk mal drüber nach. ;)