启动隐藏的InternetExplorer我公司正在使用Sharepoint和ADFS。但是,对于WebDav的使用,我们需要用户通过打开InternetExplorer并导航到两个站点来获取一些令牌。但是,他们每大约30分钟就会丢失令牌,因此这必须是一个循环任务。所以现在这就是我正在做的事情:我目前的解决方案“有点”有效,但我对此并不满意。我只有VSExpress,所以没有服务。我有一个最小化的假窗体,最大不透明度可见。我有一个将EXE文件复制到计算机的GPO,然后创建一个cron作业以在登录后每30分钟启动一次。但是,如果不手动运行EXE,人们仍然无法访问webdav。此外,每当EXE运行当前应用程序时,用户就会失去焦点,这在您输入某些内容并且必须再次单击时有点烦人。我当前的代码如下所示:privatevoidForm1_Load(objectsender,EventArgse){MainMethod();}privatevoidMainMethod(){RegistryKeyroot=Registry.LocalMachine.OpenSubKey(@"SOFTWAREClassesInternetExplorer.ApplicationMediumCLSID",false);if(root!=null){opensite();应用程序.退出();}}privatevoidopensite(){try{SHDocVw.InternetExplorer_ie1=(SHDocVw.InternetExplorer)Activator.CreateInstance(Type.GetTypeFromProgID("InternetExplorer.ApplicationMedium"));SHDocVw.InternetExplorer_ie2=(SHDocVw.InternetExplorer)Activator.CreateInstance(Type.GetTypeFromProgID("InternetExplorer.ApplicationMedium"));_ie1.Visible=false;_ie2.Visible=false;_ie1.Navigate("SITENAME1.html");_ie2.Navigate("SITENAME2.html");系统.Threading.Thread.Sleep(10000);_ie1.Quit();_ie2.Quit();}catch(Exceptione){}}但是,我认为有一种更优雅的方法可以做到这一点。我听说打开隐藏的IE的唯一方法是通过(SHDocVw.InternetExplorer)Activator.CreateInstance(Type.GetTypeFromProgID("InternetExplorer.ApplicationMedium"));但有了这个,我依赖于并非所有客户都拥有的注册表项。您能否帮助我以可靠的方式打开IE,并且可能对如何将重复任务设置为每30分钟启动一次有一些了解(因为我认为它在atm上做的不正确)。谢谢你们。编辑:感谢https://stackoverflow.com/users/5065008/daniel-waghorn我现在用以下内容替换了opensite位:privatevoidForm1_Load(objectsender,EventArgse){MainMethod();}privatevoidMainMethod(){openProc("SITE1.html");openProc("SITE2.html");应用程序.退出();}privatevoidopenProc(stringsite){ProcessStartInfostartInfo=newProcessStartInfo();字符串ProgramFiles=Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles);startInfo.FileName=ProgramFiles+@"InternetExplorerieexplore.exe";startInfo.Arguments=""+站点+"";startInfo.CreateNoWindow=true;startInfo.ErrorDialog=false;startInfo.WindowStyle=ProcessWindowStyle.Hidden;Process.Start(startInfo);}再次感谢!您可以使用ProcessStartInfo创建一个新的IE实例:ProcessStartInfostartInfo=newProcessStartInfo();startInfo.FileName=""C:ProgramFilesInternetExploreriexplore.exe"";startInfo.Arguments=""+url+"";startInfo.CreateNoWindow=true;startInfo.ErrorDialog=false;星星tInfo.WindowStyle=ProcessWindowStyle.Hidden;Process.Start(startInfo);如果您不想对其进行硬编码,您可以使用Environment.SpecialFolder.ProgramFiles来获取用户的ProgramFiles目录路径值,它可能出于任何原因显示。理想情况下,如果您不依赖于使用InternetExplorer来获取令牌,另一种选择是使用上面的代码,但目标是cURL或类似的东西。使用它,它将在命令行中运行,并且保证不会使用startInfo.CreateNoWindow显示或窃取焦点。我想您会在以下链接中找到答案:处理IE填写表单c#打开隐藏的InternetExplorer窗口而不带焦点?以上就是C#学习教程:启动隐藏的InternetExplorer分享的全部内容。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右边联系管理员删除。如需转载请注明出处:
