重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
VB.NET里
成都创新互联-专业网站定制、快速模板网站建设、高性价比沙雅网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式沙雅网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖沙雅地区。费用合理售后完善,10余年实体公司更值得信赖。
如果要向非托管函数传递函数地址,需要传递一个委托对象,封送拆收器会自动把它转化为非托管函数指针。
所以,
首先要根据要传递的函数——WndMessage定义对应的委托类型:
(注意vb.net里面的Integer是32位,相当于vb6的Long)
Public Delegate Function WndProceDelegate(hwnd As Integer, msg As Integer, wp As Integer, ip As Integer) As Integer
然后SetWindowLong最后一个参数的类型要改成上面定义的委托类型:
Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (hwnd As Integer, nIndex As Integer, dwNewLong As WndProceDelegate) As Integer
调用的时候创建委托对象:
SetWindowLong(handle,GWL_WNDPROC,New WndProceDelegate(AddressOf WndMessage))
不过这里还有一个问题,封送拆收器只保证在平台调用期间委托对象不会被回收。所以一旦SetWindowLong执行完毕,你创建的委托对象就有可能被回收掉。可以用一个非局部变量(比如字段,静态变量)来引用要传递的委托对象,这样就不会被回收。
--------------------------------------------------------------------------------------------------------
另外,你可以直接继承要接受相关消息的空间,重写WndProce。
Public Class MyPanel : Inherits Panel
Protected Overrides Sub WndProc(ByRef m As Message)
Select Case m.Msg
Case WT_PACKET
Case Else
MyBase.WndProc(m)
End Select
End Sub
End Class
你这是要把你做的浏览器当做默认浏览器吧
如果是这样,需要操作注册表
操作注册表具体方法
1、开始→运行→输入regedit,打开注册表编辑器
2、找到HKEY_CLASSES_ROOT\http\shell\open\command,在右边的窗口中双击"默认",将要用浏览器的可执行文件的完全路径输入到这里,例如设置IE为默认浏览器:输入“C:\Program Files\Internet Explorer\iexplore.exe”
3、然后找到 HKEY_CLASSES_ROOT\http\shell\open\ddeexec\Application,在右边的窗口中双击"默认",设置浏览器名,如果是Firefox则输入Firefox,如果是IE则输入IExplore。(小提示:切记不能写错名称,如果你不知道浏览器的标准名称是什么,只需要到安装目录下查看该浏览器的名称即可)
将以步骤用VB.net实现即可
Command()函数可获取启动时参数,一般用这个函数获取网址
两个方法
1.
要接收的窗口先使用FindWindow这个api获得句柄
调用SetForegroundWindow使其获得焦点并选中
调用.net方法:SendKeys.Send方法发送
2.使用API的SendInput