我正在调试一个旧的应用程序,其中 WndProc 被覆盖。我收到一条 ID=0xC1B0 的消息,这意味着根据这篇msdn 文章,这是一条系统范围内的唯一消息。
正如 microsoft 所描述的RegisterWindowMessage(...),相同的字符串参数会产生相同的消息 ID。因此,message-id 和参数之间存在唯一的链接。
我现在的问题是:如果我有消息 ID,是否有可能获取参数?如果是,这可能会帮助我找到消息的来源。
我有一个 iOS 应用程序,可以使用 WatchConnectivity 与配对的手表进行通信。在大多数情况下,它在模拟器和设备上都可以正常运行。
问题:
在模拟器的开发过程中,当我尝试使用以下命令从 iOS 向 watchOS 发送直接消息时,时不时会出现以下通信错误WCSession.default.sendMessage(_:replyHandler:errorHandler:):
Error Domain=WCErrorDomain Code=7007
"WatchConnectivity session on paired device is not reachable."
Run Code Online (Sandbox Code Playgroud)
我已经阅读了这篇相关文章,但它不适用于我的情况,因为我的应用程序可以正常工作。
我的问题:
当应用程序在 iOS 模拟器上运行时,手表模拟器怎么会变得无法访问?过一段时间
重试有意义吗?
有什么解决方法吗?sendMessage
我有启动外部应用程序的代码,并自动填写密码提示.
我想自动按"ENTER"键,这样用户就不必单击"确定".
如何将ENTER键发送到外部应用程序?
下面是我现在的代码.
将密码发布到应用程序的第一行工作正常.
发送ENTER键的第二行完全没有效果.
我正在使用Delphi 2010.
//now that we have the control handle, send the password to it
SendMessage(AppHandle,WM_SETTEXT,0,Integer(PChar(pwd)));
//and now push ENTER
SendMessage(AppHandle,WM_KEYDOWN,0,Integer(PChar(#13)));
Run Code Online (Sandbox Code Playgroud) 我试图将密钥发送到应用程序.为了方便测试,我只使用了记事本.这就是代码的样子:
[DllImport("USER32.DLL", EntryPoint = "SendMessageW", SetLastError = true,
CharSet = CharSet.Unicode, ExactSpelling = true,
CallingConvention = CallingConvention.StdCall)]
public static extern bool SendMessage(IntPtr hwnd, int Msg, int wParam, int lParam);
const int WM_KEYDOWN = 0x100;
const int WM_a = 0x41;
public void Press()
{
Process[] p = Process.GetProcessesByName("notepad");
IntPtr pHandle = p[0].MainWindowHandle;
SendMessage(pHandle, WM_KEYDOWN, WM_a, 0);
}
Run Code Online (Sandbox Code Playgroud)
但没有任何反应.
我的主要目标是将密钥发送到提升的应用程序,但我很乐意首先将其发送到记事本.我想使用SendMessage,因为我想控制按下按钮多长时间,我也不希望将其他应用程序放在前台.这就是我不使用SendKeys的原因.
这是我使用SendMessage函数填充TextBox的代码:
C := 'Hey there';
SendMessage(h1, WM_SETTEXT, 1, Integer(PChar(C)));
Run Code Online (Sandbox Code Playgroud)
现在,如何将光标移动到文本的末尾?
我使用以下代码单击按钮以显示另一个表单以单击:
Dim hwnd As Integer = FindWindow(vbNullString, "Virtual CDRom Control Panel")
Dim x As Integer = FindWindowEx(hwnd, 0, vbNullString, "Driver Control ...")
SendMessage(x, BM_CLICK, 0&, 0&)
Thread.Sleep(200)
hwnd = FindWindow(vbNullString, "Virtual CD-ROM Driver Control")
Debug.Print(hwnd)
Run Code Online (Sandbox Code Playgroud)
问题在于它何时到达
SendMessage(x,BM_CLICK,0&,0&)
单击该按钮,它会停止那里的代码,直到我退出弹出的框.我希望能够继续而不必退出框,因为下一行
hwnd = FindWindow(vbNullString,"虚拟CD-ROM驱动程序控制")
找到弹出窗口,然后单击该框内的按钮.
任何帮助都会很棒!:O)
大卫
解决了
Private Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As IntPtr
Private Declare Function FindWindowEx Lib "user32.dll" Alias "FindWindowExA" (ByVal hWndParent As IntPtr, ByVal hWndChildAfter As Integer, ByVal …Run Code Online (Sandbox Code Playgroud) 我花了几天(或更多)试图让这个工作.
手边的应用是FTPRush的,我知道有一个叫CMD行应用程序rush_cmdline.exe,它使用SendMessage将请求发送到FTPRush.
从调试rush_cmdline.exe,我可以看到lParam,wParam,Message和hWnd.
我的代码如下(使用SendMessage,而不是SendMessageW):
[DllImport("User32.dll", EntryPoint = "FindWindow")]
public static extern Int32 FindWindow(String lpClassName, String lpWindowName);
[DllImport("USER32.DLL", EntryPoint= "SendMessage")]
public static extern IntPtr SendMessage(int hWnd, int Msg, int wParam, IntPtr lParam);
Run Code Online (Sandbox Code Playgroud)
我还尝试了另一个规范:
[DllImport("User32.dll", EntryPoint = "SendMessage")]
public static extern int SendMessage(int hWnd, int Msg, int wParam, ref COPYDATASTRUCT lParam);
Run Code Online (Sandbox Code Playgroud)
handle(hWnd)不是问题,因为这有效:
int ftprush = FindWindow("TfmRush", null);
ShowWindow(ftprush, 8);
Run Code Online (Sandbox Code Playgroud)
哪个(我没有粘贴dllimport,因为它在这里不重要.如果你想看到它,请告诉我)将窗口带到前面.另外,我通过调试检查rush_cmdline.exe.所以手柄是一样的. …
我有一个应用程序,可以选择打开PDF后创建它们.如果两个报告连续生成相同的名称,如果第一个acrobat副本仍然打开PDF,则第二次尝试失败,因此在我编写PDF之前,我检查(使用FindWindow)具有文档名称的窗口.如果找到一个,我发出SendMessage WM_Close.
这工作正常,但我正在做一些其他测试,并使用Word来"编辑"PDF,保持打开,这样我就可以测试应用程序无法编写PDF文件时的行为.现在,当我的应用程序试图关闭窗口时,Word会弹出一个"你想要保存"对话框.如果我单击取消,Word仍保持打开状态,我的应用程序继续运行,我可以测试它在遇到无法写入的文件时表现得理智.
一切都很好,但它已经提醒我,使用SendMessage WM_CLOSE关闭另一个应用程序将阻止我的应用程序,如果其他应用程序弹出模式对话框.有没有办法解决这个问题 - 即关闭其他应用程序的更有力(但不是太强大)的方式?或者"关闭并在必要时单击取消".或者我应该使用异步消息?
我正在尝试使用javascript制作一个"FourConnect"游戏.我想,所有在线用户都有一个列表.这个列表是我在firebase网站上的例子.现在我希望我可以选择一个在线用户并向他们发送邀请来与我一起玩.所以我写了一个函数,所有用户都希望我有一个额外的div.当我点击div时,这个特殊用户应该得到一个确认框来说出okey或取消.如果用户点击该键,则该游戏应该开始.我将保存用户的名称和ID.这已经有效了.
我的问题是,我不知道如何将请求发送给其他用户.我尝试了很多,但总是确认框在我的brwoser上而不是在其他用户的浏览器上.
我在firebase页面和谷歌上寻找解决方案,但找不到任何解决我问题的方法.
我已有的代码:
var name = prompt("Your name?", "Guest"),
currentStatus = "? online";
// Get a reference to the presence data in Firebase.
var userListRef = new Firebase(connectFour.CONFIG.firebaseUrl);
// Generate a reference to a new location for my user with push.
var myUserRef = userListRef.push();
var gameId = myUserRef.name();
document.getElementById('labelGameId').innerHTML = gameId;
beginGame({id: gameId, name: name, status: currentStatus});
// Get a reference to my own presence status.
var connectedRef = new Firebase('http://presence.firebaseio-demo.com/.info/connected');
connectedRef.on("value", function(isOnline) {
if (isOnline.val()) {
// …Run Code Online (Sandbox Code Playgroud) 我有喜欢发送击键它来控制其他应用程序CTRLS或CTRLSHIFTC或CTRLF.
我尝试了很多东西,但是我无法让它发挥作用.所以我试图在一个更简单的案例中做到这一点.
这成功发送Hey到记事本:
procedure TForm1.Button1Click(Sender: TObject);
var notepad, edit: HWND;
begin
notepad := FindWindow('notepad', nil);
edit := FindWindowEx(notepad, FindWindow('Edit', nil), nil, nil);
SendMessage(edit, WM_CHAR, dword('H'), 0);
SendMessage(edit, WM_CHAR, dword('e'), 0);
SendMessage(edit, WM_CHAR, dword('y'), 0);
end;
Run Code Online (Sandbox Code Playgroud)
这成功地将F5密钥发送到记事本,并且还可以F3弹出查找对话框.
notepad := FindWindow('notepad', nil);
PostMessage(notepad, WM_KEYDOWN, VK_F5, 0);
PostMessage(notepad, WM_KEYUP, VK_F5, 0);
Run Code Online (Sandbox Code Playgroud)
但我不知道为什么使用SendMessage上面的例子不起作用.
我能提出的最好的事情就是这样,什么都不做.
notepad := FindWindow('notepad', nil);
PostMessage(notepad, WM_KEYDOWN, VK_CONTROL, 0);
PostMessage(notepad, WM_KEYDOWN, VkKeyScan('F'), 0); …Run Code Online (Sandbox Code Playgroud) sendmessage ×10
delphi ×4
c# ×2
findwindow ×2
pinvoke ×2
cursor ×1
delphi-7 ×1
firebase ×1
focus ×1
ios ×1
message ×1
multiplayer ×1
postmessage ×1
reachability ×1
vb.net ×1
watchos ×1
winapi ×1