win7-vb.net用EnumWindows嵌入桌面的问题

问题描述

vb.net用EnumWindows嵌入桌面的问题

各位大神,我想让窗口嵌入Win7桌面,枚举所有WorkerW找到SHELLDLL_DefView,把父窗口设置为SHELLDLL_DefView
vb.net2015代码如下:

 Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As IntPtr

Private Declare Function SetParent Lib "user32" Alias "SetParent" (ByVal hWndChild As IntPtr, ByVal hWndNewParent As IntPtr) As IntPtr

Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hwndParent As IntPtr, ByVal hwndChildAfter As IntPtr, ByVal lpszClass As String, ByVal lpszWindow As String) As IntPtr

Private Declare Function EnumWindows Lib "user32" Alias "EnumWindows" (ByVal MyCallBack As EnumWindowsProc, ByVal lParam As Integer) As Integer

Private Delegate Function EnumWindowsProc(ByVal hwnd As IntPtr, ByVal lParam As Integer) As Boolean

Private Function EnumWindowsProcCallBack(ByVal hwnd As IntPtr, ByVal lParam As Integer) As Boolean
     If hwnd = FindWindow("WorkerW", vbNullString) Then
         If hwnd = FindWindowEx(hwnd, vbNull, "SHELLDLL_DefView", vbNullString) Then
             SetParent(Me.Handle, hwnd)
             EnumWindowsProcCallBack = False
         Else
             EnumWindowsProcCallBack = True
         End If
     Else
         EnumWindowsProcCallBack = True
     End If
End Function

Dim MyCallBack As EnumWindowsProc

MyCallBack = New EnumWindowsProc(AddressOf EnumWindowsProcCallBack)

EnumWindows(MyCallBack, 0)

可是最终用Spy++查看并没有效果是怎么回事?跪求大神指点!多谢!

解决方案

MyCallBack = New EnumWindowsProc(AddressOf EnumWindowsProcCallBack)
你的思路根本就不对。
你的函数指针只是你进程中的地址,跨进程传函数指针,根本不可能回调到你,相反会导致目标进程崩溃。
要想让你的消息处理程序在别的进程中执行,首先需要用writeprocessmemory注入你的代码到目标进程,然后createremotethread执行,而且VB的代码肯定是执行不了的。必须是C++手工写机器码。
这个具体的做法在罗云彬的一本Win32汇编教程中有。

不过windows提供了shell扩展,允许你在任务栏上插入带区界面,windows 7也提供了动态桌面api。这些都在platform sdk有例子。

解决方案二:

[VB.NET]getfilenames的问题求助!
[VB.NET]文件读写问题
VB.NET写ORACLE数据库问题

时间: 2025-01-26 23:56:31

win7-vb.net用EnumWindows嵌入桌面的问题的相关文章

Win7系统重启后不保存桌面设置的操作教程

Win7系统重启后不保存桌面设置的操作教程          1.首先组合键win+r打开运行窗口,并在里面输入gpedit.msc按回车键执行,打开本地组策略编辑器窗口,如下图所示: 2.在本地组策略编辑器窗口中,依次展开用户配置--管理模块--桌面,并找到退出时不保存设置选项功能应用,如下图所示: 3.双击打开退出时不保存设置属性窗口,然后单击已启用,再点击"应用--确定"按钮;

Win7系统开始菜单图片和桌面主题发生错乱变形怎么解决?

Win7系统开始菜单图片和桌面主题发生错乱变形怎么解决?   原因其实很简单,开始菜单会随着常用软件记录而拉长!所以错乱也就很正常了!而一般主题制作者已经把"系统任务栏储存记录"的功能取消掉了. 但是我们使用主题的时候该功能没有取消掉,导致任务栏向上拉伸,结果问题就出现了. 解决方法:只要把找到图中指定的两个"储存"打钩去掉,并确定之后就可以以正常的效果显示主题了.当然你也就失去了开始菜单的常用软件显示功能.

Win7远程操作时提示“远程桌面服务当前正忙”两种解决方法

  Win7远程操作时提示"远程桌面服务当前正忙"两种解决方法           Win7系统远程桌面操作能够实现远程操控电脑,通过远程连接来进行一些控制,可是有些用户在进行远程连接的时候,输入账号密码无法进入,重新进入就会提示"由于远程桌面服务当前正忙,因此无法完成您尝试执行的任务",遇到这个问题该如何解决呢?下面小编给大家两种解决方法. 解决方法一 看一下你电脑任务管理器此项任务是否还在,如果在的话关掉就行了,很多时候是电脑没有反应过来造成的. 解决办法二 原

win7系统将鼠标移动到桌面底部才会显示任务栏怎么解决?

  win7系统将鼠标移动到桌面底部才会显示任务栏怎么解决? 1.把鼠标移动到桌面底部,等任务栏显示后点击右键,选择属性选项; 2.在弹出的窗口中最左侧的"任务栏"下会有几个外观选项,将"自动隐藏任务栏"前面的勾去掉,然后保存就可以了.

Win7系统开机后不显示桌面怎么办?

  Win7系统开机后不显示桌面怎么办?           方法一:设置原因的解决办法 1.开机后如果不显示桌面的图标,你就在桌面上点击右键,查看---显示桌面图标.这样你的桌面上的图标就会出现了.桌面功能也就正常了. 2.如果你的问题是不显示图标也不显示任务栏的话,你就按住键盘上的esc.shift.ctrl这三个键,这三个键要同时按.这时候系统没问题的话应该会出现任务管理器. 3.点击任务管理器的左上角的应用程序选项. 4.在应用程序选项中点击程序右下角的新任务按钮. 5.在创建新任务的输

Win7系统如何设置3D立体桌面?

  Win7系统如何设置3D立体桌面?          方法一:Win7系统自带立体效果桌面(就是WIN+TAB) 1.在桌面空白处右击,选择新建--快捷方式; 主题3d立体桌面"> 2.在弹出的快捷方式页面中,输入C:Windowssystem32rundll32.exe DwmApi #105,点击下一步,然后点击完成; 3.这时在桌面上可以看到刚才新建的快捷方式,将其拖动到任务栏,点击该任务栏上的图标即可实现3D效果. 方法二:使用BumpTop软件实现3D桌面 1.下载并安装Bu

Win7系统开机后不显示桌面怎么办

  Win7系统开机后不显示桌面怎么办          原因分析: 一般出现这样的情况重则系统文件遭到破坏,轻则设置错误所致. 情况一:有任务栏,图标被隐藏了 解决方法: 1.在桌面上点击右键,选择"查看"-"显示桌面图标",这样你的桌面上的图标就会出现了; 情况二:只有背景图片,点击桌面没反应 解决方法: 1.同时按下键盘上的[esc+shift+ctrl]这三个键,这三个键要同时按.这时候系统没问题的话应该会出现任务管理器; 2.在"应用程序&quo

Win7系统下使用QQ远程桌面时鼠标指针出现偏移的解决措施

  由于办公或者学习需要,很多人需要将桌面共享,然后远程协助他人解决一些问题等,而腾讯QQ中就有一项方便用户进行远程桌面的功能,即QQ远程桌面协助功能,但是有不少用户在win7系统下使用qq远程控制朋友的电脑时,发现鼠标指针出现偏移,也就是在桌面随便一处右击后在其右下方却弹出菜单,但键盘可以正常使用,遇到这样的问题要怎么解决呢,关于这个问题下面小编为大家整理了一些解决步骤如下. 推荐: 1.首先在win7系统中的桌面空白处鼠标右击选择"屏幕分辨率"选项; 2.在桌面上右键"屏

Win7系统如何更换IE浏览器桌面图标?

  Win7系统如何更换IE浏览器桌面图标?最近有Win7系统用户反映,IE浏览器的桌面图标看久了表示很腻,想要更换IE浏览器的桌面图标,可是又不知道该怎么更换,很是苦恼!下面,小编就给大家带来Win7系统更换IE浏览器桌面图标的方法,一起来看看吧. 操作步骤: 1.找到系统的IE浏览器所在位置. 2.右击弹出IE浏览器选项的设置框.(如果桌面上的图标打开属性的是internet先项,那么需要找到 "C:Program FilesInternet Exploreriexplore.exe&quo