Articles of 消息

有人可以给我一个例子,说明如何select()提醒fd变成“ready”

我不知道为什么我很难find这个,但我正在看一些我们正在使用select()等待文件描述符的linux代码来报告它已经准备好了。 从select的手册页: select() and pselect() allow a program to monitor multiple file descriptors, waiting until one or more of the file descriptors become "ready" for some class of I/O operation 所以,这很好…我打电话给一些描述符select,给它一些时间的价值,并开始等待指示去。 文件描述符(或描述符的所有者)如何报告它已经“准备就绪”,使得select()语句返回?

MessageDialog ShowAsync在第二个对话框上抛出访问exception

我试图在Windows 8中实现再次尝试/取消对话框。对话框第一次显示罚款,但再次单击再次失败,我得到一个访问被拒绝exception调用ShowAsync。 我不知道为什么,但奇怪的是,有时代码工作正常,我没有得到例外,当我把断点。 这里真的很无能 这里是代码。 async void DismissedEventHandler(SplashScreen sender, object e) { dismissed = true; loadFeeds(); } private async void loadFeeds() { await Dispatcher.RunAsync(CoreDispatcherPriority.Normal, async () => { try { RSSDataSource rssDataSource = (RSSDataSource)App.Current.Resources["RSSDataSource"]; if (rssDataSource != null) { await rssDataSource.DownloadFeeds(); await rssDataSource.GetFeedsAsync(); } AdDataSource ads = (AdDataSource)App.Current.Resources["AdDataSource"]; if (ads != null) { await ads.DownloadAds(); […]

对于已销毁的窗口的待处理消息会发生什么情况?

当仍然有消息挂起的时候窗口被破坏会发生什么? 考虑以下情况: 有三个线程,A,B和C.线程C拥有一个窗口。 线程A和B使用SendMessage将消息发送到窗口。 来自A的消息首先到达。 当C处理来自A的消息时,它使用DestroyWindow销毁它的窗口。 线程B的消息会发生什么? 线程B对SendMessage的调用是否返回? 这在内部是如何工作的?

编程方式鼠标在另一个窗口中单击

是否可以通过编程方式在另一个窗口中单击某个位置,而无需将鼠标移动到该位置,即使窗口不在顶部? 我想发送一种消息到另一个窗口模拟鼠标点击一个位置。 我试图用PostMessage完成这个工作: PostMessage(WindowHandle, 0x201, IntPtr.Zero, CreateLParam(300,300)); PostMessage(WindowHandle, 0x202, IntPtr.Zero, CreateLParam(300,300)); 我这样做了CreateLParam函数: private static IntPtr CreateLParam(int LoWord, int HiWord) { return (IntPtr)((HiWord << 16) | (LoWord & 0xffff)); } 问题是窗口被locking在他的位置上。 我认为我的应用程序点击(1,1)坐标。 可以帮助我解决这个问题吗? 编辑:这是PostMessage: [return: MarshalAs(UnmanagedType.Bool)] [DllImport("user32.dll")] public static extern bool PostMessage(IntPtr WindowHandle, int Msg, IntPtr wParam, IntPtr lParam); 而0x201和0x202分别是WM_LBUTTONDOWN和WM_LBUTTONUP。

用户locking屏幕的Windows消息

我正在用C ++编写老式Windows编程,我需要在我的WndProc中捕获一个表示用户已经注销或locking屏幕的事件。 更新 (谢谢David Hefernan)我到处search,但唯一发现的是WM_ENDSESSION消息 – 它不处理屏幕locking事件。 任何人都知道这是怎么做的? 我需要通过Windows XP的风格将其应用到Windows 2000。

将高级function添加到tkinter文本小部件

我正在研究一个简单的消息系统,并且需要将以下内容添加到Tkinter文本小部件中: 拼写检查 选项更改字体(在选定的文本上) select更改字体颜色(在选定的文本上) select更改字体大小(在选定的文本上) 我知道tkinter Text小部件能够通过标记机制使用多种字体和颜色,但我不明白如何使用这些function。 我如何使用Text小部件的function来实现这些function? 具体而言,如何更改字体系列,字体的颜色和大小,以及如何使用拼写检查来实现拼写检查,其中拼写错误的单词是用下划线或与其他文本不同的颜色标注的。

在我的delphi项目中拖放不起作用

这个话题显然在这里一遍又一遍地被打了,但是现在我从我的观点来看只是没有办法。 操作系统: Windows XP SP3 所以,这里是我在我的应用程序中使用的RichEdit的拖放示例 : procedure TForm1.AcceptFiles( var msg : TMessage ); // or TWMDROPFILES const cnMaxFileNameLen = 255; var i, nCount : integer; acFileName : array [0..cnMaxFileNameLen] of char; begin // find out how many files we're accepting nCount := DragQueryFile( msg.WParam, // or msg.Drop $FFFFFFFF, acFileName, cnMaxFileNameLen ); // query Windows […]

我的应用程序如何findWindows消息的发件人?

我有一个应用程序在库中使用键盘钩子程序。 在一个消息的钩子wParam是255,我们认为是“(保留/ OEMClear)”。 我想找出这个消息的来源,因为它会导致我的应用程序在图书馆崩溃,并且鉴于它不应该发生,这将是很好的识别它。 信息只能在一台PC上重复出现 – 其他电脑根本看不到信息。 那么,有没有办法跟踪发送到窗口的消息的来源,或者系统上的所有消息?

如何防止控制改变Z命令?

我有.Net中的用户控件,我在WndProc中使用命中testing来允许在运行时用鼠标调整它的大小。 问题是,在命中testing成功后(鼠标按下,拖动resize,鼠标释放),控件以Z顺序向上跳,并将其废弃在窗体中。 我需要命中testing,因为它是一个非常自定义的控件。 WndProc有没有办法阻止控件改变它的Z顺序? 谢谢。 命中testing代码: protected override void WndProc(ref Message m) { if (!DesignMode && Sizeable && (m.Msg == Win32Wrapper.WM_NCHITTEST)) { Point Hit = new Point((int)m.LParam & 0xFFFF, (int)m.LParam >> 16); Hit = this.PointToClient(Hit); int DistToBorder = 5; if (Hit.X < DistToBorder) { if (Hit.Y < DistToBorder) { m.Result = (IntPtr)Win32Wrapper.HTTOPLEFT; return; } if […]

使用sendmessage将wm_close发送到另一个进程

我想发送wm_close到另一个进程,我想要安全地结束这个进程。 int _tmain(int argc, _TCHAR* argv[]) { DWORD SetOfPID; SetOfPID = GetProcId(_T("abc.exe")); //this will return pid HANDLE h = OpenProcess(PROCESS_ALL_ACCESS,false, SetOfPID); HWND hwnd = ::GetTopWindow(NULL); while(hwnd) { DWORD pid; DWORD dwThreadId = ::GetWindowThreadProcessId(hwnd, &pid); if(pid == SetOfPID) { break; } hwnd = ::GetNextWindow(hwnd, GW_HWNDNEXT); } //DestroyWindow(hwnd); bool temp = IsWindow(hwnd); **//this gives true** LRESULT res […]