vb.net 里 appactivate() 失效

goodkenneth 2019-01-15 10:10:42
vb.net
想法是

程序启动的时候 load 里 调用 process.star() 某exe 后。

给他个焦点 appactivate() 。

后sendkey()对他进行操作

但给appactivate() 后。偶尔没给上焦点,此时任务栏里 图标一直在闪烁。


有大神知道原因和解决方法吗?

对了,普通的点击事件里是没问题,可能我的代码里是写在 Form1_Load 里面的 调用的 方法,就出现了上述的问题。没激活成功,就在任务栏里闪啊闪。

caozhy大神问题里回答的 SetForegroundWindow()也用过。。效果一样。

csdn也没个私信之类的联系,问答里也没有追问 ,就只能再坛子里再发一次。看有没有大神知道原因。要怎么解决呢

...全文
782 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
numbermax 2019-03-24
  • 打赏
  • 举报
回复
先使用AttachThreadInput()让进程和线程共享输入,然后使用SetForegroundWindow()设置前景窗口,最后调用BringWindowToTop()让窗口置前,然后sendkey应该就可以有效了。
goodkenneth 2019-02-16
  • 打赏
  • 举报
回复
引用 10 楼 橘子皮zzz 的回复:
直接强制最前台,点击完再取消前置
迅雷播放器等很多软件都有这个bug,激活后有时候会失去焦点

现在的问题就是无法 强制在最前台
goodkenneth 2019-02-16
  • 打赏
  • 举报
回复
引用 7 楼 良朋 的回复:
有没试试把process.star() 写Form1_Load 代码的最后面? 真正稍微加个延时,然后再process.star()?


肯定要先star把外部程序运行起来。 延迟后。再去 激活这个窗口呀。

试过。这个问题不是百分百复现。。
goodkenneth 2019-02-16
  • 打赏
  • 举报
回复
引用 7 楼 良朋 的回复:
有没试试把process.star() 写Form1_Load 代码的最后面? 真正稍微加个延时,然后再process.star()?


试过了。延迟多少也是无效的
思考 2019-02-15
  • 打赏
  • 举报
回复
appactivate后,必须要加延时
  • 打赏
  • 举报
回复
引用 6 楼 goodkenneth 的回复:
有人帮忙看看还有什么办法吗
等待和查看你要看的窗体有没有加载完成,一般看process列表里面有没有这个窗体启动后的名称,比如“记事本” 然后再去设置焦点,否则稍后再次检测,你还可以设置多次检测动作后自动报错等。 这不是vb.NET的问题。是你自己对process启动和窗体load事件没有区分清楚导致的。
良朋 2019-02-12
  • 打赏
  • 举报
回复

有没试试把process.star() 写Form1_Load 代码的最后面? 真正稍微加个延时,然后再process.star()?
橘子皮... 2019-02-12
  • 打赏
  • 举报
回复
直接强制最前台,点击完再取消前置 迅雷播放器等很多软件都有这个bug,激活后有时候会失去焦点
  • 打赏
  • 举报
回复

var process = System.Diagnostics.Process.GetProcessesByName("notepad")
.FirstOrDefault(p => p.MainWindowTitle.StartsWith(""));
放个c#代码你参考吧,我懒得写成vb了
goodkenneth 2019-01-23
  • 打赏
  • 举报
回复
引用 4 楼 kxyzjm62 的回复:
应用程序窗口初始化完成的时间不确定


不管这个时间长短。在启动后 我用 appactivate() 或者api SetForegroundWindow() 给焦点也给不上 不过这些也是在load里 给的。

程序完全启动后。再手动 给 appactivate() 或者api SetForegroundWindow() 就都没问题。。


其实就是想实现一个自动化。在开机后。启动exe并操作一下
goodkenneth 2019-01-23
  • 打赏
  • 举报
回复
有人帮忙看看还有什么办法吗
kxyzjm62 2019-01-23
  • 打赏
  • 举报
回复
应用程序窗口初始化完成的时间不确定
goodkenneth 2019-01-22
  • 打赏
  • 举报
回复
引用 2 楼 思考 的回复:
比如打开哪个程序会有问题,为例便于测试,用一个通用程序,计算器,这个怎么样?

通用的。

我系统开机运行我们的程序。然后在load里用调用 process.star() 启动exe 这个exe是任意。

如果手动打开一个程序默认是有焦点的。不知道为什么Load里打开的偶尔没有焦点,有时也有。



思考 2019-01-22
  • 打赏
  • 举报
回复
比如打开哪个程序会有问题,为例便于测试,用一个通用程序,计算器,这个怎么样?
goodkenneth 2019-01-22
  • 打赏
  • 举报
回复
有没有大佬帮忙看看呀

16,554

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧