
标题: [问题求助] [已解决]怎么用powershell来调用api刷新桌面? [打印本页]
作者: czjt1234 时间: 2024-12-27 21:39 标题: [已解决]怎么用powershell来调用api刷新桌面?
本帖最后由 czjt1234 于 2024-12-28 15:16 编辑
- Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
- Private Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
- Private Const WM_KEYDOWN = &H100
- Private Sub Main()
- Dim Desktop As Long
- Desktop = FindWindow("Progman", "Program Manager")
- PostMessage Desktop, WM_KEYDOWN, vbKeyF5, 0
- End Sub
复制代码
vb里面这个可以刷新桌面
怎么用powershell来调用这两个api?
作者: jyswjjgdwtdtj 时间: 2024-12-27 22:34
本帖最后由 jyswjjgdwtdtj 于 2024-12-27 22:40 编辑
ps可以用addtype用csharp导入api函数 后面的操作就一样了
或许可以试试shall.application的verb也可以assoc随便修改一个后缀名 会刷新图标 进而刷新桌面
作者: flashercs 时间: 2024-12-28 14:49
- Add-Type -TypeDefinition @'
- Imports System
- Imports System.Runtime.InteropServices
-
- Namespace MyCode
-
- Public Module Win32
- ' 定义常量
- Public Const WM_KEYDOWN As Integer = &H100
- Public Const VK_F5 As Integer = &H74
-
- ' 导入 FindWindow 函数
- <DllImport("user32.dll", CharSet:=CharSet.Auto)>
- Public Function FindWindow(ByVal lpClassName As String, ByVal lpWindowName As String) As IntPtr
- End Function
-
- ' 导入 PostMessage 函数
- <DllImport("user32.dll", CharSet:=CharSet.Auto)>
- Public Function PostMessage(ByVal hWnd As IntPtr, ByVal Msg As Integer, ByVal wParam As IntPtr, ByVal lParam As IntPtr) As <MarshalAs(UnmanagedType.Bool)> Boolean
- End Function
-
- ' 导入 GetDesktopWindow 函数
- <DllImport("user32.dll", CharSet:=CharSet.Auto)>
- Public Function GetDesktopWindow() As IntPtr
- End Function
-
- End Module
-
- End Namespace
- '@ -Language VisualBasic
- $progman = [MyCode.Win32]::FindWindow("Progman", "Program Manager")
- [MyCode.Win32]::PostMessage($progman, [MyCode.Win32]::WM_KEYDOWN, [MyCode.Win32]::VK_F5, 0)
复制代码
作者: flashercs 时间: 2024-12-28 14:51
- Add-Type -TypeDefinition @'
- using System;
- using System.Runtime.InteropServices;
- namespace MyCode
- {
- public static class Win32
- {
- public const int WM_KEYDOWN = 0x100;
- public const int VK_F5 = 0x74;
-
- [DllImport("user32.dll", CharSet = CharSet.Auto)]
- public static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
-
- [DllImport("user32.dll",CharSet = CharSet.Auto)]
- [return: MarshalAs(UnmanagedType.Bool)]
- public static extern bool PostMessage(IntPtr hWnd, int Msg, IntPtr wParam, IntPtr lParam);
-
- [DllImport("user32.dll",CharSet = CharSet.Auto)]
- public static extern IntPtr GetDesktopWindow();
-
- }
- }
- '@
- $progman = [MyCode.Win32]::FindWindow("Progman", "Program Manager")
- [MyCode.Win32]::PostMessage($progman, [MyCode.Win32]::WM_KEYDOWN, [MyCode.Win32]::VK_F5, 0)
复制代码
作者: czjt1234 时间: 2024-12-28 14:55
回复 4# flashercs
谢谢
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |