C# 生成后调用SetForegroundWindow无效
我遇到了一个特殊的情况,快被VS给玩死了。。。我在一个时钟里加了这句话,本应该每隔一段时间执行一次的,但是生成EXE后完全无效果。我自己也有排查问题,这是我大致总结的。请...
我遇到了一个特殊的情况,快被VS给玩死了。。。
我在一个时钟里加了这句话,本应该每隔一段时间执行一次的,但是生成EXE后完全无效果。我自己也有排查问题,这是我大致总结的。请大神帮忙解决:
开VS调试模式下:
代码被执行,程序运行正常。
开VS,直接双击生成后的EXE文件:
代码被执行,程序运行正常。
关闭VS,直接双击生成后的EXE文件:
代码没有被执行,但是时钟依然有效,我让时钟在屏幕里输出字符来证明时钟是有效的。
程序在整个执行过程中并没有报错,我也没使用 Try 这个东西。
这问题折磨我好久了,希望大神看看这是啥子情况。 展开
我在一个时钟里加了这句话,本应该每隔一段时间执行一次的,但是生成EXE后完全无效果。我自己也有排查问题,这是我大致总结的。请大神帮忙解决:
开VS调试模式下:
代码被执行,程序运行正常。
开VS,直接双击生成后的EXE文件:
代码被执行,程序运行正常。
关闭VS,直接双击生成后的EXE文件:
代码没有被执行,但是时钟依然有效,我让时钟在屏幕里输出字符来证明时钟是有效的。
程序在整个执行过程中并没有报错,我也没使用 Try 这个东西。
这问题折磨我好久了,希望大神看看这是啥子情况。 展开
2个回答
展开全部
你在始终的第一行和最后一行都输出字符看看,就能确定它是否正常运行到最后;如果最后一行没有输出字符,应当是你后面的代码有问题;
另外SetForegroundWindow的确有时候无效,看下
http://bbs.csdn.net/topics/90170759
另外SetForegroundWindow的确有时候无效,看下
http://bbs.csdn.net/topics/90170759
更多追问追答
追问
其实不光是SetForegroundWindow这个不好使。
我也有用过
SetWindowPos(this.Handle.ToInt64(), -1, 0, 0, 0, 0, 3);
这个也同样不管用,所以我怀疑是C#在调用DLL时出现了什么问题。
而且你所说的第一行和最后一行输出,我代码里有类似的,整个时钟会控制屏幕图像的绘制,图像绘制完全正常。所以,应该是执行到那里了,只不过无效而已。
追答
你的主要目的是想要它始终保持在最前端是吗?
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
窗口最小化则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表示激活窗口并将其最大化。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询