zeroblue2005
Goto Top

Minimierte Access Anwendung mit Batch in den Vordergrund holen

Hallo Zusammen,

wie der Titel schon sagt, möchte mit einem Skript, dass wiederum Bestandteil eines Main-Script ist, eine minimierte Access-Anwendung (Fenstertitel) einfach nur von der Taskleiste maximiert wiederherstellen, starten bzw. in den Fokus holen.

Hat jemand eine Idee?

Content-ID: 611865

Url: https://administrator.de/contentid/611865

Ausgedruckt am: 22.11.2024 um 00:11 Uhr

rubberman
Lösung rubberman 11.10.2020 aktualisiert um 12:54:34 Uhr
Goto Top
Mit Batch pur nicht. PowerShell schon eher. Kannst maximal beides miteinander verwursten.
@echo off &setlocal

call :init_window_to_foreground

%window_to_foreground% 3 "dein Fenstertitel hier"  
echo %errorlevel%

pause
exit /b


:init_window_to_foreground
setlocal DisableDelayedExpansion
set window_to_foreground=for %%i in (1 2) do if %%i==2 (^
%=% for /f "tokens=1*" %%j in ("^^!arg^^!") do powershell.exe  -nop -ep Bypass -c ^"try{$c=Add-Type -Name pInv -PassThru -MemberDefinition '^  
%=====% [DllImport(\"user32.dll\")] public static extern IntPtr FindWindow(IntPtr lpClassName, string lpWindowName);^  
%=====% [DllImport(\"user32.dll\")] public static extern int ShowWindow(IntPtr hWnd, int nCmdShow);^  
%=====% [DllImport(\"user32.dll\")] public static extern int SetForegroundWindow(IntPtr hwnd);';^  
%=====% $hwnd = $c::FindWindow([IntPtr]::Zero,\"%%~k\");^  
%=====% $null = $c::ShowWindow($hwnd,%%~j);^
%=====% exit [int]($c::SetForegroundWindow($hwnd) -eq 0);}catch{exit 1;}^"^&endlocal^  
%=% ) else setlocal EnableDelayedExpansion^&set arg=

endlocal&set "window_to_foreground=%window_to_foreground%"  
if !!# neq # set "window_to_foreground=%window_to_foreground:^^=%" 
exit /b
Für das 1. Argument siehe nCmdShow hier: https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-sh ...

Steffen
em-pie
em-pie 11.10.2020 um 09:01:29 Uhr
Goto Top
Moin,

Ein kleines AutoIT-Script wäre auch denkbar. Wobei man hier evtl. vorhandene AV-Software im Auge behalten muss.

Gruß
em-pie
zeroblue2005
zeroblue2005 11.10.2020 um 09:39:36 Uhr
Goto Top
Hallo Rubberman,

genau so brauche ich das. Vielen Dank dafür. Gibt es auch einen Schalter für geöffnet in Max. Fenster und alte Position wieder herstellen?
146189
Lösung 146189 11.10.2020 aktualisiert um 10:43:22 Uhr
Goto Top
Zweiter Parameter von ShowWindow ist dein Freund

Eine 3 wenn es maximiert werden soll, eine 9 wenn es in Originalposition wiederhergestellt werden soll
$c::ShowWindow($hwnd,3);
bzw.
$c::ShowWindow($hwnd,9);

https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-sh ...
zeroblue2005
zeroblue2005 11.10.2020 um 11:16:34 Uhr
Goto Top
Herzlichen Dank, läuft.
rubberman
rubberman 11.10.2020 um 12:44:36 Uhr
Goto Top
Hab das Script oben angepasst, sodass du auch das über ein Argument spezifizieren kannst.

Steffen