志在指尖
用双手敲打未来

C# Process.Start()函数打开url被360拦截问题

运用Process.Start(newProcessStartInfo(url))来翻开某一网址的时分,常常会被360提示相似这样的信息:
“要挟:修正此注册表项将更改IE衔接设置。少数软件会修正此项,假如随意修正,可能形成无法上网。假如您不认识此程序,请阻止。”
这是由于360会判别启动阅读器的父窗口,假如父窗口是系统或受信程序则经过,反之,若是未知的程序则提示要挟。
理解了这个,我们就能够想到用api函数ShellExecute,经过指定父窗口参数为null(0)来防止360提示。如下:C#
复制代码
[DllImport(“shell32.dll”)]
publicexternstaticIntPtrShellExecute(inthwnd,stringlpOperation,stringlpFile,stringlpParameters,stringlpDirectory,intnShowCmd);
publicenumShowWindowCommands:int
{
SW_HIDE=0,
SW_SHOWNORMAL=1,
SW_NORMAL=1,
SW_SHOWMINIMIZED=2,
SW_SHOWMAXIMIZED=3,
SW_MAXIMIZE=3,
SW_SHOWNOACTIVATE=4,
SW_SHOW=5,
SW_MINIMIZE=6,
SW_SHOWMINNOACTIVE=7,
SW_SHOWNA=8,
SW_RESTORE=9,
SW_SHOWDEFAULT=10,
SW_MAX=10
}
ShellExecute(0,@”open”,@”http://www.baidu.com”,null,null,(int)ShowWindowCommands.SW_NORMAL);
复制代码
附上ShellExecute的一些参考信息:
1.函数功用:
你能够给它任何文件的名字,它都能辨认出来并翻开它。
2.函数原型:
HINSTANCEShellExecute(
HWNDhwnd,
LPCTSTRlpOperation,
LPCTSTRlpFile,
LPCTSTRlpParameters,
LPCTSTRlpDirectory,
INTnShowCmd
);
3.参数阐明:
hwnd:
用于指定父窗口句柄。当函数调用过程呈现错误时,它将作为Windows音讯窗口的父窗口。
lpOperation:
用于指定要停止的操作。
“open”操作表示执行由lpFile参数指定的程序,或翻开由lpFile参数指定的文件或文件夹;
“print”操作表示打印由lpFile参数指定的文件;
“explore”操作表示阅读由lpFile参数指定的文件夹。
当参数设为NULL时,表示执行默许操作“open”。
lpFile:
用于指定要翻开的文件名、要执行的程序文件名或要阅读的文件夹名。
lpParameters:
若lpFile参数是一个可执行程序,则此参数指定命令行参数,否则此参数应为NULL.
lpDirectory:
用于指定默许目录.
nShowCmd:
若lpFile参数是一个可执行程序,则此参数指定程序窗口的初始显现方式,否则此参数应设置为0。
这个参数常用的常数:
SW_HIDE躲藏窗口,活动状态给令一个窗口
SW_MINIMIZE最小化窗口,活动状态给令一个窗口
SW_RESTORE用原来的大小和位置显现一个窗口,同时令其进入活动状态
SW_SHOW用当前的大小和位置显现一个窗口,同时令其进入活动状态
SW_SHOWMAXIMIZED最大化窗口,并将其激活
SW_SHOWMINIMIZED最小化窗口,并将其激活
SW_SHOWMINNOACTIVE最小化一个窗口,同时不改动活动窗口
SW_SHOWNA用当前的大小和位置显现一个窗口,不改动活动窗口
SW_SHOWNOACTIVATE用最近的大小和位置显现一个窗口,同时不改动活动窗口
SW_SHOWNORMAL与SW_RESTORE相同
若ShellExecute函数调用胜利,则返回值为被执行程序的实例句柄。若返回值小于32,则表示呈现错误。
4.返回值
执行胜利会返回应用程序句柄
返回的HINSTANCE能够将它转换为一个整数(%d),并比拟它的值大于还是小于32或比拟它的错误代码
返回值大于32表示执行胜利
返回值小于32表示执行错误
msdn:Ifthefunctionsucceeds,itreturnsavaluegreaterthan32.Ifthefunctionfails,itreturnsanerrorvaluethatindicatesthecauseofthefailure.ThereturnvalueiscastasanHINSTANCEforbackwardcompatibilitywith16-bitWindowsapplications.ItisnotatrueHINSTANCE,however.Itcanbecastonlytoanintandcomparedtoeither32orthefollowingerrorcodesbelow.
返回值可能的错误有:=0{内存缺乏}
ERROR_FILE_NOT_FOUND=2;{文件名错误}
ERROR_PATH_NOT_FOUND=3;{途径名错误}
ERROR_BAD_FORMAT=11;{EXE文件无效}
SE_ERR_SHARE=26;{发作共享错误}
SE_ERR_ASSOCINCOMPLETE=27;{文件名不完整或无效}
SE_ERR_DDETIMEOUT=28;{超时}
SE_ERR_DDEFAIL=29;{DDE事务失败}
SE_ERR_DDEBUSY=30;{正在处置其他DDE事务而不能完成该DDE事务}
SE_ERR_NOASSOC=31;{没有相关联的应用程序}
5.运用办法:
例如:
ShellExecute(NULL,”open”,”iloveu.bmp”,NULL,NULL,SW_SHOWNORMAL);
用缺省的位图编辑器翻开一个叫iloveu.bmp的位图文件,这个缺省的位图编辑器可能是MicrosoftPaint,AdobePhotoshop,或者CorelPhotoPaint。
这个函数能翻开任何文件,以至是桌面和URL快捷方式(.ink或.url)。ShellExecute解析系统注册表HKEY_CLASSES_ROOT中一切的内容,判别启动那一个执行程序,并且启动一个新的实例或运用DDE将文件名连到一翻开的实例。然后,ShellExecute返回翻开文件的应用的实例句柄。
ShellExecute(NULL,”open”,”http://www.microsoft.com”,NULL,NULL,SW_SHOWNORMAL);
这个代码使你能访问微软的主页。当ShellExecute遇到文件名前面的“http:”时,能够判别出要翻开的文件是Web文件,随之启动InternetExplorer或者NetscapeNavigator或者任何你运用的别的阅读器翻开文件。
ShellExecute还能辨认其它协议,象FTP、GOPHER。以至辨认“mailto”,假如文件名指向“mailto:zxn@hq.cninfo.net”,它启动电子邮件程序并翻开一个待编辑的新邮件,例如:
ShellExecute(NULL,”open”,“mailto:zxn@hq.cninfo.net”,NULL,NULL,SW_SHOWNORMAL);翻开新邮件窗口。
总之,ShellExecute函数就是如此简单地翻开磁盘文件和Internet文件。假如将第二个参数“OPEN”改为“PRINT”或者“EXPLORE”,ShellExecute将能打印文件和翻开文件夹。ShellExecute还有一个扩展函数ShellExecuteEx,所带参数中有一个特殊的构造,功用更强,或者任何你运用的别的阅读器翻开文件。

未经允许不得转载:IT技术网站 » C# Process.Start()函数打开url被360拦截问题
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

志在指尖 用双手敲打未来

登录/注册IT技术大全

热门IT技术

C#基础入门   SQL server数据库   系统SEO学习教程   WordPress小技巧   WordPress插件   脚本与源码下载