Saya mencoba menggunakan skrip yang diberikan dalam jawaban ini. Mengatur ukuran dan posisi jendela di PowerShell 5 dan 6
untuk mengatur tinggi dan ukuran beberapa jendela windows explorer. Bukan internet explroer .. browser file yang disebut 'explorer'.
ini bekerja dengan program 'notepad'. tetapi tidak dengan program 'explorer'.
#works
Set-Window -ProcessName notepad-X 400 -Y 400 -Width 400 -Height 700
#doesnt work
Set-Window -ProcessName explorer -X 400 -Y 400 -Width 400 -Height 700
idealnya saya ingin memiliki skrip:
- buka 3 windows explorer.
- arahkan ke filepath A, B, C
- mengubah ukuran setiap jendela ke lokasi tertentu di layar
Bagaimana saya bisa melakukan ini tanpa menginstal perangkat lunak tambahan dan hanya menggunakan PowerShell mentah di sini?
EDIT: Setelah menggunakan saran harrymc, saya sudah setengah jalan melalui masalah .. Saya bisa memindahkan jendela tapi saya hanya perlu mencari cara untuk menangani 3 proses anak penjelajah ...
$MethodDefinition = @'
[DllImport("user32.dll")]
public extern static bool MoveWindow(IntPtr handle, int x, int y, int width, int height, bool redraw);
'@
$Kernel32 = Add-Type -MemberDefinition $MethodDefinition -Name 'Kernel32' -Namespace 'Win32' -PassThru
# How do I get 3 child explorer IDs here?
# i can't pass in 'explorer' name because that references the parent process running the whole GUI
$Handle = (Get-Process -Name "notepad").MainWindowHandle
$Return = [Window]::MoveWindow($Handle, 10, 20, 400, 400,$True)
Edit 2:
Saya sudah mencoba mendapatkan jendela penjelajah melalui fungsi Mulai-Proses tetapi saya menerima kesalahan:
$er3 = (Start-Process explorer -passthru)
PS C:\> (Get-Process -Id $er3.Id).MainWindowHandle
Get-Process : Cannot find a process with the process identifier 10572.At line:1 char:2
+ (Get-Process -Id $er3.Id).MainWindowHandle
+ ~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (10572:Int32) [Get-Process], ProcessCommandException
+ FullyQualifiedErrorId : NoProcessFoundForGivenId,Microsoft.PowerShell.Commands.GetProcessCommand
katanya sudah keluar ... tapi jendela penjelajah filebrowser tetap terbuka ... tidak yakin apa yang terjadi di sini. Jika saya mencobanya dengan notepad berfungsi ...
$er4 = (Start-Process notepad -passthru)
PS C:\> (Get-Process -Id $er4.Id).MainWindowHandle
9899994
Sunting 3: Saya sudah menemukannya menggunakan ComObject, dan mengakses item (0).
$ex4 = New-Object -ComObject Shell.Application
$ex4.open("C:\")
# $ex4.windows()[0].Width = 400 # breaks
$ex5 = $ex4.Windows()[0]
$ex6 = $ex5.Item(0) # not sure why i need to do this extra step
$ex6.Width = 400
$ex6.Navigate("file:///C:/Folder1/Folder2")
sumber
PowerShell sebenarnya bukan alat otomatisasi UI. Sesuai apa yang Anda tunjukkan, mengapa tidak menggunakan ...
UiAtomation
Deskripsi Proyek
TAWON
Catatan: Ini tidak lagi dipertahankan, tetapi masih berfungsi seperti yang dirancang dan fakta Anda menggunakan kode sampel yang tidak pernah atau akan pernah dipertahankan.
Lihat juga solusi terawat penuh ini:
AutoIT
sumber