![]() |
Anderes Programm verschieben und vergrößern
Hallo Leute,
ich möchte die Position von einen anderen Programmes welches schon läuft ändern und Vergrößeren. Beispiel: Es läuft Nodepad auf dem Rechner. Nun möchte ich es in die obere Linke Ecke schieben auf 10,10 und auf 200,300 vergößern. Hat das schon einmal jemand gemacht und kann mir sagen wie es es angehen soll / kann ? Danke Tanja |
AW: Anderes Programm verschieben und vergrößern
Hi,
erstmal musst du an das richtige Fensterhandle kommen. Siehe hierzu (z.B. FindWindow): ![]() Anschließend kannst du mit dem Fensterhandle Position und Größe ändern: ![]() |
AW: Anderes Programm verschieben und vergrößern
Als erstes muss dir klar sein was genau deine Definition von "Programm" ist. Ein Programm kann ein Fenster haben, aber auch mehrere oder keins. Woran machst du es fest? Am Fenstertitel (z.B. "Unbenannt - Editor")? Oder am Namen der .exe-Datei ("notepad.exe")? Was ist wenn das Programm mehrere male läuft?
|
AW: Anderes Programm verschieben und vergrößern
Für Notepad gilt:
Delphi-Quellcode:
program ProjectNpMove;
{$APPTYPE CONSOLE} {$R *.res} uses System.SysUtils, Winapi.Windows, Winapi.PsAPI; type TFindWindowRec = record ModuleToFind: string; FoundHWnd: HWND; end; function EnumWindowsCallBack(Handle: hWnd; var FindWindowRec: TFindWindowRec): BOOL; stdcall; const C_FileNameLength = 256; var WinFileName: string; PID, hProcess: DWORD; Len: Byte; begin Result := True; SetLength(WinFileName, C_FileNameLength); GetWindowThreadProcessId(Handle, PID); hProcess := OpenProcess(PROCESS_ALL_ACCESS, False, PID); Len := GetModuleFileNameEx(hProcess, 0, PChar(WinFileName), C_FileNameLength); if Len > 0 then begin SetLength(WinFileName, Len); if SameText(WinFileName, FindWindowRec.ModuleToFind) then begin Result := False; FindWindowRec.FoundHWnd := Handle; end; end; end; function MoveNotepad(const Left, Top, Width, Height: Integer): Boolean; var FindWindowRec: TFindWindowRec; begin FindWindowRec.ModuleToFind := 'c:\windows\system32\notepad.exe'; FindWindowRec.FoundHWnd := 0; EnumWindows(@EnumWindowsCallback, integer(@FindWindowRec)); Result := FindWindowRec.FoundHWnd <> 0; if Result then SetWindowPos(FindWindowRec.FoundHWnd, 0, Left, Top, Width, Height, 0); end; begin try Writeln(MoveNotepad(10, 10, 200, 300)); except on E: Exception do Writeln(E.ClassName, ': ', E.Message); end; end. |
AW: Anderes Programm verschieben und vergrößern
|
AW: Anderes Programm verschieben und vergrößern
Hmm...
Zitat:
Oder auch (etwas) Kürzer ;)
Delphi-Quellcode:
function MoveNotepad(const Left, Top, Width, Height: Integer): Boolean;
var hWindow: HWND; begin hWindow := FindWindow('notepad',nil); if hWindow > 0 then SetWindowPos(hWindow, 0, Left, Top, Width, Height, 0); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:07 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