jjzjj

SetForegroundwindow

全部标签

c# - SetForegroundWindow 在 Windows Server 2008 上失败

场景我有我的主要应用程序,它最初是用BorlandC++编写的,由C#.Net应用程序启动。这个主应用程序偶尔会从名为BRWSEXE的进程中打开一个模式对话框。弹出模态对话框窗口后,您可能会不小心单击主应用程序中的某个位置(而不是对话框),导致焦点短暂更改为主应用程序,在Z顺序中将模态对话框发送到它后面。但是您实际上不能在主应用程序上执行任何操作,它被必须先关闭才能继续的模态对话框窗口锁定。问题使用启动所有内容的.net应用程序,我可以找出与主应用程序相关的BRWSEXE实例并将它们强制置于前台。到目前为止,这种策略在我测试过的所有地方(Windowsxp、Windows7、Windo

c# - 如果 SetForegroundWindow 和 ShowWindowAsync 不起作用,我该如何设置前景窗口?

它是一个c#winform应用程序。我已将ShowInTaskbar属性设置为false,因为我不希望程序出现在任务栏中,但像这样的SetForegroundWindow或ShowWindowAsync不起作用。 最佳答案 RaymondChen在他的经典文章Foregroundactivationpermissionislikelove:Youcan'tstealit,ithastobegiventoyou中解释了Windows中围绕前台激活的规则。.粗略地说,您不能使用像SetForegroundWindow这样的调用来窃取前台

windows - haskell 中的 win32 SetForegroundWindow

我注意到HaskellWin32api没有SetForegroundWindow函数,而且我对haskell不够熟练,无法自己添加此功能。是否有任何方法可以使用haskell复制它,或者是否有人使用ffi制作了自己的包装器? 最佳答案 这是一个使用FFI的简单包装器:{-#LANGUAGEForeignFunctionInterface#-}moduleSetForegroundWindow(setForegroundWindow)whereimportForeignimportGraphics.Win32foreignimport

c# - 如何将焦点设置到另一个窗口?

我有一个程序失去焦点的问题。这不是我的程序。我如何编写第二个程序来每隔1-2秒将焦点设置到该窗口?可以这样做吗? 最佳答案 如果您想关注其他一些程序/进程,您可以使用以下Win32API调用。[DllImport("user32.dll")]staticexternboolSetForegroundWindow(IntPtrhWnd);privatevoidBringToFront(ProcesspTemp){SetForegroundWindow(pTemp.MainWindowHandle);}

c# - FindWindow 和 SetForegroundWindow 替代品?

我正在寻找使用FindWindow()和SetForegroundWindow()切换到不同应用程序的旧User32.dll版本的替代方案.我确实找到了使用Process.GetProcessesByName()的第一个替代方法,但我没有看到切换(设置事件/前景)到该应用程序的相应方法。有没有一种方法可以不使用User32.dll的旧方法来做到这一点?感谢您的帮助。编辑虽然这不是我要找的答案,但我接受了@Sorceri的回答。 最佳答案 回答:没有但是,为了帮助下一个寻找窗口并从C#激活它的好奇者,您必须执行以下操作:[DllImp

c# - 查找并激活应用程序的窗口

假设notepad.exe正在打开并且它的窗口处于非事件状态。我会写一个应用程序来激活它。如何制作?更新:窗口标题未定义。所以,我不喜欢使用基于窗口标题的FindWindow。我的应用程序是WinformC#2.0。谢谢。 最佳答案 您需要P/调用SetForegroundWindow()。Process.MainWindowHandle可以为您提供所需的句柄。例如:usingSystem;usingSystem.Diagnostics;usingSystem.Runtime.InteropServices;classProgram

windows - BringWindowToTop、SetForegroundwindow、SetWindowPos 等有什么区别?

BringWindowToTop,SetForegroundWindow,SwitchToThisWindow,SetWindowPos,ShowWindow所有这些都被描述为显示和激活一个窗口。它们之间的真正区别是什么?何时以及为何会BringWindowToTop首选SetForegroundWindow,或SwitchToThisWindow甚至SetWindowPos标志设置为激活和显示? 最佳答案 涉及到许多密切相关的概念,相关术语经常被滥用,即使在官方文档中也是如此。重要的window类型:顶级窗口:没有父窗口的窗口。应

c# - 如何将 key 发送到另一个应用程序

我想将一个特定的键(例如k)发送到另一个名为记事本的程序,下面是我使用的代码:privatevoidSendKey(){[DllImport("User32.dll")]staticexternintSetForegroundWindow(IntPtrpoint);varp=Process.GetProcessesByName("notepad")[0];varpointer=p.Handle;SetForegroundWindow(pointer);SendKeys.Send("k");}但是代码不行,代码哪里出了问题?是否可以将“K”发送到记事本而没有记事本作为事件窗口?(例如,a

c# - 如何将 key 发送到另一个应用程序

我想将一个特定的键(例如k)发送到另一个名为记事本的程序,下面是我使用的代码:privatevoidSendKey(){[DllImport("User32.dll")]staticexternintSetForegroundWindow(IntPtrpoint);varp=Process.GetProcessesByName("notepad")[0];varpointer=p.Handle;SetForegroundWindow(pointer);SendKeys.Send("k");}但是代码不行,代码哪里出了问题?是否可以将“K”发送到记事本而没有记事本作为事件窗口?(例如,a

c++ - Win32::SetForegroundWindow() 一直不工作

我正在开发一个消息传递工具。消息窗口是整个应用程序的一部分。当有消息传来时,我需要窗口转到前面。我正在使用这段代码:if(m_hwnd==NULL||!::IsWindow(m_hwnd))returnE_UNEXPECTED;if(::IsIconic(m_hwnd)){::ShowWindowAsync(m_hwnd,SW_RESTORE);}::SetWindowPos(m_hwnd,HWND_TOP,0,0,0,0,SWP_ASYNCWINDOWPOS|SWP_NOMOVE|SWP_NOSIZE|SWP_SHOWWINDOW);::SetForegroundWindow(m_h
12