C# 生成后调用SetForegroundWindow无效

我遇到了一个特殊的情况,快被VS给玩死了。。。我在一个时钟里加了这句话,本应该每隔一段时间执行一次的,但是生成EXE后完全无效果。我自己也有排查问题,这是我大致总结的。请... 我遇到了一个特殊的情况,快被VS给玩死了。。。

我在一个时钟里加了这句话,本应该每隔一段时间执行一次的,但是生成EXE后完全无效果。我自己也有排查问题,这是我大致总结的。请大神帮忙解决:

开VS调试模式下:
代码被执行,程序运行正常。

开VS,直接双击生成后的EXE文件:
代码被执行,程序运行正常。

关闭VS,直接双击生成后的EXE文件:
代码没有被执行,但是时钟依然有效,我让时钟在屏幕里输出字符来证明时钟是有效的。
程序在整个执行过程中并没有报错,我也没使用 Try 这个东西。

这问题折磨我好久了,希望大神看看这是啥子情况。
展开
 我来答
xtfnpgy
推荐于2016-02-27 · TA获得超过1784个赞
知道大有可为答主
回答量:1989
采纳率:76%
帮助的人:1102万
展开全部
你在始终的第一行和最后一行都输出字符看看,就能确定它是否正常运行到最后;如果最后一行没有输出字符,应当是你后面的代码有问题;
另外SetForegroundWindow的确有时候无效,看下
http://bbs.csdn.net/topics/90170759
更多追问追答
追问
其实不光是SetForegroundWindow这个不好使。
我也有用过
SetWindowPos(this.Handle.ToInt64(), -1, 0, 0, 0, 0, 3);
这个也同样不管用,所以我怀疑是C#在调用DLL时出现了什么问题。
而且你所说的第一行和最后一行输出,我代码里有类似的,整个时钟会控制屏幕图像的绘制,图像绘制完全正常。所以,应该是执行到那里了,只不过无效而已。
追答
你的主要目的是想要它始终保持在最前端是吗?
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
水墨的世界
2022-09-15 · TA获得超过1058个赞
知道答主
回答量:227
采纳率:100%
帮助的人:20万
展开全部

窗口最小化则SetForegroundWindow

无效,最好用ShowWindow或ShowWindowAsync,ShowWindow或ShowWindowAsync都是差不多,可根据线程使用。

 [DllImport("user32.dll", CharSet = CharSet.Auto, ExactSpelling = true)]

  public static extern int ShowWindow(IntPtr hwnd, int nCmdShow);//nCmdShow:指定窗口如何显示,nCmdShow可以是0至10中一个,数字代表窗口不同状态,数据含义具体可以参考ShowWindow百度百科网页链接

比如:ShowWindowAsync(hwnd, 2);//数字2表示激活窗口并将其最大化。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式