WIN7以上的操作系统,含win7,怎样做才能在服务中获得窗口句柄,闭关窗体
ou108 2017-09-27 05:02:44
我试过:用FindWindow在程序中可以,可以找到窗体局柄,但写成服务后就不行了,服务中返回局柄是0。
我程序功能也就是需求:查找到指定窗体,直接关闭,给相关窗体加保护功能,不可以打开。
保护win7,win8,win10客户端电脑中相关的文件夹不被打开。
public const int WM_CLOSE = 0x10;
[DllImport("user32.dll", EntryPoint = "SendMessageA")]
public static extern int SendMessage(IntPtr hwnd, int wMsg, int wParam, int lParam);
[DllImport("User32.dll", EntryPoint = "FindWindow")]
private static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
try
{
string FolderName = System.Configuration.ConfigurationManager.AppSettings["FolderName"].ToString();
string[] l_closeFolderName = FolderName.Split(',');
if (l_closeFolderName.Length > 0)
{
for (int i = 0; i <= l_closeFolderName.Length - 1; i++)
{
IntPtr hwnd_win;
hwnd_win = FindWindow(null, l_closeFolderName[i].Trim());
SendMessage(hwnd_win, WM_CLOSE, 0, 0);
}
}
////string FolderName = @"spcdata";
//FolderName = @"testdata";
//IntPtr hwnd_win;
//hwnd_win = FindWindow(null, FolderName);
//SendMessage(hwnd_win, WM_CLOSE, 0, 0);
//FolderName = @"spcdata";
//hwnd_win = FindWindow(null, FolderName);
//SendMessage(hwnd_win, WM_CLOSE, 0, 0);
//FolderName = @"testdata";
//hwnd_win = FindWindow(null, FolderName);
//SendMessage(hwnd_win, WM_CLOSE, 0, 0);
//FolderName = @"spcdata";
//hwnd_win = FindWindow(null, FolderName);
//SendMessage(hwnd_win, WM_CLOSE, 0, 0);
}
catch (Exception ex)
{
LogWriter.Instance.writeError(ex.ToString());
}
以上代码在桌面进程,桌面程序中使用正常,在服务中不管用
查找了相关 WIN7 如何穿透Session 0 的知识,发现不够用
在此请教高手,望高手们给予答案。