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 的知识,发现不够用
在此请教高手,望高手们给予答案。

...全文
279 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
threenewbee 2017-09-29
  • 打赏
  • 举报
回复
http://blog.csdn.net/c0ast/article/details/18285645 http://blog.csdn.net/zfanlong1314/article/details/7296047
assky124 2017-09-29
  • 打赏
  • 举报
回复
服务的用户和窗体的用户不一样吧
cheng2005 2017-09-29
  • 打赏
  • 举报
回复
这个需求都被你做偏了。什么叫做“保护win7,win8,win10客户端电脑中相关的文件夹不被打开”,你这个方式只能找到windows的资源管理器打开的文件夹,我要是用别的文件管理器打开文件夹呢?最简单的,我用命令行打开文件夹你怎么管?保护文件最好的方式是加密,而不是什么文件夹不能打开,简直是一个无厘头的需求,提需求的人无脑,分析需求的人也无脑,开发的人更无脑。
ou108 2017-09-29
  • 打赏
  • 举报
回复
引用 4 楼 wddw1986 的回复:
这个需求都被你做偏了。什么叫做“保护win7,win8,win10客户端电脑中相关的文件夹不被打开”,你这个方式只能找到windows的资源管理器打开的文件夹,我要是用别的文件管理器打开文件夹呢?最简单的,我用命令行打开文件夹你怎么管?保护文件最好的方式是加密,而不是什么文件夹不能打开,简直是一个无厘头的需求,提需求的人无脑,分析需求的人也无脑,开发的人更无脑。
哥们:用查找窗体局柄的方法,俺的程序已经测试通的,用命令行打开文件夹 程序可以直接关闭,因为只要是打开这个窗体,它就有局柄, 至于用其它的程序打开文件夹(保存另存为等不在此需求内); 您老激动了。
ou108 2017-09-28
  • 打赏
  • 举报
回复
本人是想在服务中直接查找窗体局柄,然后直接关闭。 穿透Session 0 是迂回的做法,启动一个exe程序查找窗体局柄再关闭。 向大师们求助。
大鱼> 2017-09-27
  • 打赏
  • 举报
回复
保护win7,win8,win10客户端电脑中相关的文件夹不被打开。这个需求不错,做好了能不能分享一下。
我将带领大家来系统学习Windows的窗口编程,包括消息、窗口、GDI绘图、游戏开发等。本课程比较基础,非常适合初学者入门,读者可以边学习边实践。具体的章节目录和课程内容如下所示:---------------------------------------------Windows游戏编程系列之1:GUI界面编程及游戏入门实战1、Windows创建第一个窗口 WinMain入口函数 5进行Windows编程的调试手法 6窗口从哪里来? 7窗口编程的步骤 7窗口编程需要的主要结构 8窗口编程需要的主要API 92、Windows的窗口过程与消息机制 如何留住窗口? 121)Windows的消息与消息循环 142)消息处理函数与常用消息 17)Windows的窗口过程函数 19 3、GDI编程之设备上下文 1)GDI的通用编程框架 222)GDI的绘图步骤 253)GDI获取设备句柄 254、GDI编程之绘制几何图形 画点、线 28颜色COLORREF 29矩形 29画圆、饼图、弦图 305、GDI编程之自定义画笔画刷画笔简介 32画刷简介 33画笔案例 33画刷案例 346、GDI编程之绘制文字 DrawText函数 35TextOut 函数 (wingdi.h) 36CreateFont函数 37绘制文本案例 377、GDI编程之绘制位图 位图简介 381)在资源添加位图资源 392)从资源加载位图: LoadBitmap 393)创建一个与当前DC相匹配的DC(内存DC) 394)将bitmap放入匹配的DC:SelectObject 405)成像(1:1 比例 ) 406)取出位图 407)释放位图 418)释放匹配的DC 41绘制位图案例 41   8、Windows鼠标键盘消息 一、键盘消息 421、键盘消息 422、消息参数: 423、消息的使用: 424、键盘消息的案例代码 43二、鼠标消息 441、基本鼠标消息 442、双击消息 443、滚轮消息 454、不响应双击消息 45 9、Windows定时器消息 定时器消息介绍 47创建定时器 47关闭定时器 47定时器消息案例代码 4810、GDI游戏之跳舞动画 11、GDI游戏之走路动画 12、GDI贪吃蛇游戏实战  

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧