标签: sendmessage

WebGLInput.captureAllKeyboardInput 奇怪的行为。可以启用,但不能禁用

我遇到了 WebGLInput 的非常奇怪的行为。我有一个使用 WebGL Unity 构建的网站。默认情况下,WebGL 会捕获所有键盘输入。但是,我必须在 html 中使用输入字段。

所以首先我禁用 WebGLInput 并且它可以工作:

private void Start()
{
#if !UNITY_EDITOR && UNITY_WEBGL 
     WebGLInput.captureAllKeyboardInput = false;
#endif
}
Run Code Online (Sandbox Code Playgroud)

然后使用下面的函数向 unity 发送一条消息来切换键盘输入。它首先会启用它,但不会禁用它!

document.addEventListener('click', function(e) {
    if (e.target.id == "#canvas") {
        this.FocusCanvas("1");
    } else {
        this.FocusCanvas("0");
    }
}.bind(this), false);
Run Code Online (Sandbox Code Playgroud)

这是我用来切换 WebGLInput 的统一代码:

public void FocusCanvas(string focus)
{
    #if !UNITY_EDITOR && UNITY_WEBGL
        if (focus == "0") {
            WebGLInput.captureAllKeyboardInput = false;
        } else {
            WebGLInput.captureAllKeyboardInput = true;
        }
    #endif
}
Run Code Online (Sandbox Code Playgroud)

我尽可能地调试了它,并且我非常确定该方法已被触发并且所有内容都已执行。但禁用 captureAllKeyboardInput 不起作用。有人遇到过这样的问题吗?如果是这样,请告诉我我做错了什么?

javascript sendmessage unity-game-engine unity-webgl

1
推荐指数
1
解决办法
1503
查看次数

VB.net可编程地下拉DateTimePicker

嘿,我在这里有这个代码:

Call SendMessage(dtPicker.Handle, CB_SHOWDROPDOWN, True, 0&)
Run Code Online (Sandbox Code Playgroud)

这在组合框上运行良好,但在DateTimePicker框中似乎不起作用.

可能是什么问题呢?

谢谢!

大卫

vb.net sendmessage datetimepicker drop-down-menu

0
推荐指数
1
解决办法
7601
查看次数

WM_GETTEXT用法

我正试图在我的应用程序中获取文本字段的状态.但是我没有让它发挥作用.我正在使用"SendMessage"获取"WM_GETTEXT",我将内容保存为char*.

我将char*输出到一个文件,但我只返回"D".这就是我现在拥有的:

LRESULT result;
char * output = (char*)malloc(1024);

result = SendMessage(hwnd,WM_GETTEXT,1024,(LPARAM)output);

ofstream file("test.txt");
file <<  *output;
file.close();

delete [] output;
Run Code Online (Sandbox Code Playgroud)

windows visual-studio-2005 sendmessage visual-c++

0
推荐指数
1
解决办法
1747
查看次数

如果explorer.exe没有运行,可以使用SendMessageW(...)?

我正在尝试使用标准SendMessageW() 方法从控制台应用程序取消静音.但是,我们有自己的应用程序作为shell运行,而不是explorer.exe.当我试图取消静音时,没有任何反应; 但是一旦我启动资源管理器它就可以了.是否必须运行资源管理器才能发送消息?
码:

private const int APPCOMMAND_VOLUME_MUTE = 0x80000; 
private const int WM_APPCOMMAND = 0x319;
SendMessageW(Process.GetCurrentProcess().MainWindowHandle, WM_APPCOMMAND, Process.GetCurrentProcess().MainWindowHandle, (IntPtr)APPCOMMAND_VOLUME_MUTE);
Run Code Online (Sandbox Code Playgroud)

返回值为SendMessageW()0.
如果需要资源管理器,是否有人知道另一种取消静音方法?

Side Note
我刚刚尝试使用vbs:

Set WshShell = CreateObject("WScript.Shell")
WshShell.SendKeys(chr(&hAD))
Run Code Online (Sandbox Code Playgroud)

并得到了相同的结果.只有在explorer.exe运行时才取消静音.

c# explorer message-queue sendmessage

0
推荐指数
1
解决办法
948
查看次数

VB.NET将Tab键发送到另一个应用程序窗口

我想将"{TAB}"密钥发送到另一个应用程序窗口(将密钥发送到窗口而不是文本框).

我试过了:

SendMessage(hWnd, WM_SETHOTKEY, VK_TAB, 0)
Run Code Online (Sandbox Code Playgroud)

没啥事儿.
我的目标是: 当应用程序窗口不在焦点时,
将tab键发送到我的应用程序其他应用程序. (我知道sendkey不专业,在这种情况下没有选择(这是我第一次使用它).)

我做了很多尝试,我总是回到同样的结果:

没啥事儿.

有人知道答案吗?

vb.net postmessage sendmessage windows-messages winforms

0
推荐指数
1
解决办法
2万
查看次数

如何捕获两个没有标题和同一类的文本框?

所以,我正在尝试捕获一个包含2个文本框的窗口,并向这两个文本框发送一些文本.但是两个文本框都没有标题和相同的类名"编辑".到目前为止,我所能做的就是捕获第一个文本框,就是这样.

贴在下面是我的代码.

Imports System.Runtime.InteropServices
Imports System.Text

Public Class Form1

    Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
    (ByVal lpClassName As String, ByVal lpWindowName As String) As Integer

    Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
    (ByVal hWnd As Integer, ByVal wMsg As Integer, ByVal wParam As Integer, _
     ByVal lParam As String) As Integer

    Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" _
    (ByVal hWnd1 As Integer, ByVal hWnd2 As Integer, ByVal lpsz1 As String, _
     ByVal lpsz2 …
Run Code Online (Sandbox Code Playgroud)

vb.net api sendmessage findwindow findwindowex

0
推荐指数
1
解决办法
1884
查看次数

SendMessage到Application.Handle无法正常工作

我已经创建了一个类,当它将被释放时,它应该向整个应用程序传播一个自定义消息.我做到了PostMessage,它只有几个错误

PostMessage(Application.Handle, UM_MYMESSAGE, 0, 0);
Run Code Online (Sandbox Code Playgroud)

然后我意识到它应该是同步的 - 通过SendMessage.

SendMessage(Application.Handle, UM_MYMESSAGE, 0, 0);
Run Code Online (Sandbox Code Playgroud)

在我的表单上,我使用TApplicationEvents组件处理消息,但只是切换SendMessagePostMessage没有使它处理消息

procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG;
  var Handled: Boolean);
begin
  if Msg.message = UM_MYMESSAGE then
  begin
    ShowMessage('Ok');

    Handled := True;
  end;
end;
Run Code Online (Sandbox Code Playgroud)

如果我通过表格处理但没有合作,它可以工作Application.Handle......我做错了什么?

delphi postmessage sendmessage

0
推荐指数
1
解决办法
647
查看次数

如何发送鼠标点击?

我需要编写一个单击Windows的应用程序。

如何将左键单击发送到窗口所在的某个屏幕x / y坐标?

c++ winapi sendmessage

-1
推荐指数
1
解决办法
1万
查看次数

Delphi:以管理员身份运行的应用程序不会从非管理员应用程序接收消息

我想使用SendMessage / PostMessage将消息发送到另一个应用程序,但是当另一个应用程序以管理员身份运行时,它永远不会收到消息。如何在不以管理员身份运行“发送”应用程序的情况下克服此问题?

编辑:Remi的答案,接收器应用程序的代码

Const dummyValue = WM_USER + 71423;

  Application.HookMainWindow(AppClass.AppHookFunc);
  ChangeWindowMessageFilter(dummyValue, MSGFLT_ADD);

Type TAppClass = class
  function AppHookFunc(var Message : TMessage): Boolean;
end;

Var AppClass: TAppClass;

function TAppClass.AppHookFunc(var Message : TMessage): Boolean;
begin
  Result := False;
  Case Message.Msg of
    dummyValue: begin
      // do stuff
      //
      Result := True;
    end;
  end;
end;
Run Code Online (Sandbox Code Playgroud)

delphi winapi postmessage sendmessage

-1
推荐指数
1
解决办法
117
查看次数

C++为什么Sendmessage不起作用?

在C#中,此SendMessage函数成功提高了音量:

[DllImport("user32.dll")]
public static extern IntPtr SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam);

SendMessage(Handle, 0x319, (int)Handle, APPCOMMAND_VOLUME_UP);
Run Code Online (Sandbox Code Playgroud)

但是在C++中,这个SendMessage函数不起作用,即卷不会上升:

// HWND hwnd = CreateWindow(...
SetWindowText(hwnd, "Hi"); // Worked
SendMessage(hwnd, WM_APPCOMMAND, (int)hwnd, APPCOMMAND_VOLUME_UP); // Don't work
Run Code Online (Sandbox Code Playgroud)

我错了什么?你能帮我解决一下吗?谢谢!

完整代码:

#include <windows.h>
HHOOK _hhook;
HWND hwnd;
HINSTANCE _hInstance;

KBDLLHOOKSTRUCT kbdStruct;

LRESULT __stdcall HookCallback(int nCode, WPARAM wParam, LPARAM lParam)
{
    if (nCode >= 0)
    {
        if (wParam == WM_KEYDOWN)
        {
            // lParam is the pointer to the struct containing the data needed, so cast …
Run Code Online (Sandbox Code Playgroud)

c++ winapi hwnd handle sendmessage

-2
推荐指数
1
解决办法
4277
查看次数