问题描述
想写一个程序,大概就是管理远程桌面的,因为系统的mstsc的跳转列表只有IP,多的情况下不知道哪个是哪个。这是App.xaml.cs里的代码,也就是可以接受启动参数protectedoverridevoidOnStartup(StartupEventArgse){MainWindowPowerRD;PowerRD=newMainWindow();if(e.Args.Length>0){PowerRD.ShowEx(e.Args[0]);}}
ShowEx方法publicvoidShowEx(stringip){Process.Start("mstsc","/v:"+ip);//调用mstsc打开远程桌面}
程序创建跳转列表首先从xml读取信息<ItemIP="192.168.1.254:3393"Tag="测试服务器"Used="3"/>然后创建一个个Task这样子是能正确打开远程桌面的。但如果MyTask.ApplicationPath="mstsc.exe";这个去掉,这个属性缺省则是调用本程序。MyTask.Arguments=ComputersInfo[i].IP;这样子按理说就是调用程序.exe192.168.1.1(参数),这样子却没有反应如果创建一个快捷方式,后面加上参数,也是能正确打开远程桌面的,也就是说启动参数这个功能应该是没问题的。所以这里改如何处理。做这个的目的是希望能统计点击次数,好在跳转列表排序创建跳转列表的代码:///<summary>///创建跳转列表///</summary>voidCreateJumplist(){try{List<ComputerInfo>ComputersInfo=newList<ComputerInfo>();XmlDocumentXmlDoc=newXmlDocument();XmlDoc.Load(_xmlPath);XmlNoderootNode=XmlDoc.SelectSingleNode("Root/Computer");XmlNodeListComputers=rootNode.ChildNodes;foreach(XmlNodeiteminComputers){XmlElementcomputer=itemasXmlElement;varComputerIP=computer.GetAttribute("IP");varTag=computer.GetAttribute("Tag");varUsed=computer.GetAttribute("Used");//string[]ComputerInfo=newstring[]{ComputerIP,Tag,Used};ComputerInfoCInfo=newComputerInfo();CInfo.IP=ComputerIP;CInfo.Tag=Tag;CInfo.Used=Int32.Parse(Used);ComputersInfo.Add(CInfo);}ComputersInfo.Sort();JumpListRDS=newJumpList();varj=0;if(ComputersInfo.Count<10){j=ComputersInfo.Count;}else{j=10;}for(vari=0;i<j;i+=1){RDS.ShowFrequentCategory=true;RDS.ShowRecentCategory=true;JumpTaskMyTask=newJumpTask();MyTask.Title=ComputersInfo[i].Tag;MyTask.ApplicationPath="mstsc.exe";//MyTask.WorkingDirectory=MyTask.Arguments="/v:"+ComputersInfo[i].IP;//MyTask.Arguments=ComputersInfo[i].IP;MyTask.CustomCategory="常用";RDS.JumpItems.Add(MyTask);}JumpList.SetJumpList(App.Current,RDS);}catch(Exceptionex){lblNotice.Content="发生异常:"+ex.Message;}}
解决方案
解决方案二:
Apply呢?
解决方案三:
好吧,不是Apply的问题,我调试的时候也是弹不出来的,直接双击exe是可以的
解决方案四:
引用2楼shingoscar的回复:
好吧,不是Apply的问题,我调试的时候也是弹不出来的,直接双击exe是可以的
反正跳转列表调用mstsc是可以的,调用这个程序来调用mstsc是不行……
解决方案五:
还有人知道么……
解决方案六:
再顶顶