jjzjj

sendMessage

全部标签

windows - 为什么 SendMessage() 函数不起作用?

我尝试向窗口发送WM_LBUTTONDOWN和WM_LBUTTONUP消息(模拟鼠标点击而不移动光标)。我的程序在许多窗口上运行良好,但有一些不运行:(像注册表编辑器、YahooMessenger、一些Firefox站点等...我怎样才能与上面的人一起工作??注意#1:我使用的是Win7注意#2:我的代码只是调用api和函数并将它们应用到特定的窗口句柄上。它工作正常,但不是在所有Windows上:( 最佳答案 UAC的另一个方面,称为UIPI或用户界面隐私隔离,可能会导致此问题。旨在防止未提升运行的程序劫持提升的程序的功能。这当然解

windows - 使用 WM_SHOWWINDOW 代替 ShowWindow() 来显示窗口

我正在尝试使用热键实用程序(或NirCMD等)的SendMessage功能来弹出隐藏窗口。例如,我可以通过发送0x0010(WM_CLOSE)来关闭窗口,但是当我尝试发送wParam为1和lParam为0的0x0018(WM_SHOWWINDOW)时,没有任何反应。我环顾四周,有人提示WM_SHOWWINDOW不起作用的几个地方,他们很高兴地接受了改用ShowWindow()的建议。但是我没有可用的ShowWindow();我只能发送Windows消息。但是ShowWindow()并不神奇,它肯定可以通过SendMessage-ingWM_SHOWWINDOW或幕后的东西来工作。如何通

c# - 如何将 Ctrl/Shift/Alt + 组合键发送到应用程序窗口? (通过发送消息)

我可以成功地向应用程序发送任何单个按键消息,但我不知道如何发送按键组合(如Ctrl+F12、Shift+F1、Ctrl+R等。)试过这样做:SendMessage(handle,WM_KEYDOWN,Keys.Control,0);SendMessage(handle,WM_KEYDOWN,Keys.F12,0);SendMessage(handle,WM_KEYUP,Keys.F12,0);SendMessage(handle,WM_KEYUP,Keys.Control,0);但这似乎不起作用(应用程序就像只按下F12,而不是Ctrl+F12)。有什么想法可以实现吗?

c# - 如何防止 RichTextBox 刷新其显示?

我有一个RichTextBox,我需要在其中频繁更新Text属性,但是当我这样做时,RichTextBox会烦人地“闪烁”,因为它会在整个方法调用过程中刷新。我希望找到一种简单的方法来暂时抑制屏幕刷新,直到我的方法完成,但我在网上找到的唯一方法是重写WndProc方法。我已经采用了这种方法,但有一些困难和副作用,而且它也使调试更加困难。似乎必须有更好的方法来做到这一点。有人可以指出更好的解决方案吗? 最佳答案 这是完整的工作示例:privateconstintWM_USER=0x0400;privateconstintEM_SETE

c# - SendMessage/SC_MONITORPOWER 在运行 Windows 8 时不会打开监视器

我使用以下代码打开和关闭我的显示器:[DllImport("user32.dll")]staticexternIntPtrSendMessage(IntPtrhWnd,intMsg,IntPtrwParam,IntPtrlParam);privateconstintWM_SYSCOMMAND=0x0112;privateconstintSC_MONITORPOWER=0xF170;privateconstintMonitorTurnOn=-1;privateconstintMonitorShutoff=2;//TurnthemoffSendMessage(f.Handle,WM_SYS

c# - 禁用 WinForms ProgressBar 动画

是否可以禁用进度条的动画?我需要它来处理一些暂停且目前未运行的进程。如果进度条在闪烁,普通用户会认为进程正在运行。创建自己的进度条控件的建议不是我想要的。 最佳答案 您可以使用Vista进度条的暂停状态,likethis://AssumingaForm1with3ProgressBarcontrolsprivatevoidForm1_Load(objectsender,EventArgse){SendMessage(progressBar2.Handle,0x400+16,//WM_USER+PBM_SETSTATE0x0003,/

c# - 使用 C#/Win32 将文本写入记事本

我正在弄乱Win32API和Windows消息传递,试图弄清楚它们是如何工作的,我发现了这个questionveryhelpful.我想改进那里提供的解决方案,以便它附加文本,而不是仅仅通过WM_SETTEXT替换记事本中的文本。我的问题是,我将如何使用WM_GETTEXTLENGHT,然后使用WM_GETTEXT来获取记事本窗口中的当前文本,以便我可以在使用WM_SETTEXT之前向其追加新文本?在32位和64位机器上使用WM_XXXTEXT是否都有效?如果记事本中有很多文本,建议的获取/设置算法是否仍然有效,或者它会占用大量资源吗?如果是这样,是否有另一种方法可以将文本附加到记事本

c# - 通过 SendMessage 或其他方式异步 GetForegroundWindow?

有没有一种方法可以在焦点从任何窗口更改到另一个窗口(甚至在Windows应用程序之间)时得到通知,这样我就可以在用户更改焦点时立即调用我的委托(delegate)?我一直在想我可能只需要做轮询:(:(每1秒并调用GetForegroundWindow但我真的不想这样做。 最佳答案 SetWinEventHook()可能是你最好的选择;您可以监听EVENT_SYSTEM_FOREGROUND以监听前景窗口的变化-或者甚至监听EVENT_OBJECT_FOCUS以监听应用程序和控件内更精细的焦点变化。您需要将其与WINEVENT_OUT

c# - C# 最小化所有打开的窗口

我在论坛上看到这个C++代码,它最小化了所有打开的窗口#defineMIN_ALL419#defineMIN_ALL_UNDO416intmain(intargc,char*argv[]){HWNDlHwnd=FindWindow("Shell_TrayWnd",NULL);SendMessage(lHwnd,WM_COMMAND,MIN_ALL,0);Sleep(2000);SendMessage(lHwnd,WM_COMMAND,MIN_ALL_UNDO,0);return0;}如何在C#.net中访问FindWindow和SendMessageAPI函数以及HWND类型?

c# - SendMessage 消息编号的解释?

我已经成功地使用WindowsSendMessage方法帮助我在我的文本编辑器中做各种事情,但每次我只是复制和粘贴别人建议的代码,我真的不知道它是什么意思。始终有一个神秘的消息编号作为参数。我如何知道这些代码数字的含义,以便我能够真正了解正在发生的事情,并(希望)在未来更加自给自足?谢谢。最近的例子:usingSystem.Runtime.InteropServices;[DllImport("user32.dll")]staticexternintSendMessage(IntPtrhWnd,uintwMsg,UIntPtrwParam,IntPtrlParam);SendMessa