Entwickler-Ecke
Windows API - ShellExecute + Position
TheNeon - Di 20.05.03 15:04
Titel: ShellExecute + Position
Holla,
gibt es eine Möglichkeit ein Fenster mit ShellExecute aufzurufen und es beispielsweise bildschirmzentriert darzustellen?
djmasi - Di 20.05.03 15:43
Ja mit
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| SetWindowPos( HWND hWnd, HWND hWndInsertAfter, int X, int Y, int cx, int cy, UINT uFlags ); |
. Dazu brauchst Du das Handle von dem Prog. Bekommst es mit EnumWindowsProc. Mit
GetSystemMetrics(SM_CXSCREEN)
bzw
Delphi-Quelltext
1:
| GetSystemMetrics(SM_CYSCREEN) |
bekommst Du die Bildschirmdaten. Das dann berechnen sollte nicht schwer sein :)
TheNeon - Di 20.05.03 17:50
erm .......... tja ........ :roll:
Problem:
danke für die gute Antwort, allerdings bin ich noch nicht ganz fit in Sachen "handle" ......
... wenn mir also jemand ein Beispiel geben könnte für EmunWindowsProc wäre ich sehr dankbar ....... auch verstehe ich nicht ganz bei SetWindowPos den 2. und letzten Parameter.
die Delphi-Hilfe hat mich nicht unbedingt weitergebracht ...... da dort auch keine Beispiele drin sind, aus denen ich mir Wissen / Infos saugen kann :?
TheNeon - Di 20.05.03 19:36
SetWindowPos ist nun klar, aber EnumWindow ist immernoch mehr als ein Rätsel :cry:
Delete - Di 20.05.03 20:49
Kann man bei CreateProcess nicht in einer Struktur die Position angeben?
Tino - Mi 21.05.03 09:30
| Luckie hat folgendes geschrieben: |
| Kann man bei CreateProcess nicht in einer Struktur die Position angeben? |
Aber diese Postitionsangaben werden von vielen Anwendungen überschrieben weil diesen Anwendungen das Fenster an die Position setzten an welcher ich das Fenster vorher geschlossen habe.
Gruß
Tino
TheNeon - Mi 21.05.03 11:53
:wave:
eine kleine Bitte:
falls jemand in seinem Programm EnumWindow oder derartiges benutzt, köntte ich den Teil hier gepostet bekommen?
Ich kappier das ganze Zeugs nicht so richtig. :cry: :cry:
In der Zwischenzeit werde ich mich an der eigenen Nase packen und etwas nachholen müssen.
danke :(
djmasi - Mi 21.05.03 13:06
Servus,
vielleicht hilft Dir das noch etwas. Mußt es halt nach Deinen Wünschen modifizieren :wink:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47:
| ... var TListe : TList; ... function EnumWindowsProc(WND: HWND; LParam: LPARAM): BOOL; stdcall;
function EnumWindowsProc(WND: HWND; LParam: LPARAM): BOOL; stdcall; var PLW: ^HWND; begin Result := True; If IsWindow(WND) and ((IsWindowVisible(WND) ) and ((GetWindowLong(WND, GWL_HWNDPARENT) = 0) or (GetWindowLong(WND, GWL_HWNDPARENT) = GetDesktopWindow)) and (GetWindowLOng(WND, GWL_EXSTYLE) and WS_EX_TOOLWINDOW = 0)) Then begin If Assigned(TListe) Then begin new(PLW); PLW^ := WND; TListe.Add(PLW); end; end; end;
... procedure irgendwas; begin TListe := TList.Create; EnumWindows(@EnumWindowsProc,0); end; ...
procedure TTaskListe.Zeigen(Sender: TObject); var Title: array[0..255] of Char; lauf : Word; begin For lauf := 0 To TListe.Count - 1 do begin GetWindowText(HWND((TListe.Items[lauf])^), Title, 256); If (Title <> 'GDI+ Window') and (Title <> 'Taskmanager') Then begin FensterHandle := HWND((TListe.Items[lauf])^); end; end; end; |
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!