小编DNR*_*DNR的帖子

如何从具有管理员权限的应用程序接收键盘输入到非管理员应用程序?

我编写了一个具有覆盖类型窗口的应用程序,可以通过热键显示和隐藏,而另一个应用程序具有焦点.所述其他应用程序是使用管理员权限运行的DirectX游戏.

我已经尝试了3种可能的解决方案,当我在其他应用程序中按下热键时收到通知,其中2种工作,但要求我的应用程序也具有管理权限.这是可以接受的,但我宁愿有一个不需要这些特权的解决方案.我确信必须有一种方法,因为像TeamSpeak这样的应用程序确实能够在不以管理员身份运行的情况下接收输入.

我已经尝试过了:

  1. RegisterHotkey - 不适合,因为它在DirectX窗口中不起作用.
  2. SetWindowsHookEx - 作为通用键盘钩子,但仅具有管理员权限.
  3. GetAsyncKeyState - 用于检查指定的热键,但不能再次使用管理员权限.

所以,是的,如果有人可以为不同的解决方案提供一个想法,我会非常感激,因为我无法想到......我正在使用Delphi,但是因为我依赖Windows API,所以我不这样做认为解决方案将特定于语言.

delphi winapi keyboard-hook uipi

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

使用TScaledLayout和自定义样式绘制问题

我在组合TScaledLayout和从fmx中的位图样式设计器创建的自定义样式时遇到绘画问题.

为了演示,我加载了通过在位图样式设计器中选择"VCL/FMX的新样式" - >"另存为.style"创建的默认自定义样式.我在一些彩色矩形上放了几个标准控件:TScaledLayout上的红色和绿色,蓝色直接放在表单上.当我拉伸表格时,ScaledLayout上的控件上会出现彩色线条; 背景部分可见:

绘制拉伸控件的问题

如果我将表单的大小设置为与设计时尺寸完全匹配,则线条会消失.这似乎是一个非常重要的问题,我当然不能像这样一起使用这两个.有没有人对可能的修复或解决方法有所了解?

delphi firemonkey firemonkey-style delphi-xe7

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

在本地模式下运行 Spark 应用程序

我正在尝试使用 spark-submit 在本地模式下启动我的 Spark 应用程序。我在 Windows 上使用 Spark 2.0.2、Hadoop 2.6 和 Scala 2.11.8。该应用程序在我的 IDE (IntelliJ) 中运行良好,我还可以在具有实际物理执行程序的集群上启动它。

我正在运行的命令是

spark-submit --class [MyClassName] --master local[*] target/[MyApp]-jar-with-dependencies.jar [Params]

Spark 照常启动,但随后终止

java.io.Exception: Failed to connect to /192.168.88.1:56370

我在这里缺少什么?

apache-spark

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

如何区分firemonkey中的numpad和常规数字键?

我正在尝试确定按钮的OnKeyDown中按下的键(FMX,XE3),但我目前发现自己无法区分小键盘键和常规键...

根据我按下的键,我可以使用Key或KeyChar找出已按下的键.例如,按下F1发送112和#0,这样我就可以使用VkCode,按下A发送0和'a',这样我就可以使用'a'.KeyChar在很多情况下都是#0显然是有意义的,但是如果KeyChar存在,我无法理解为什么Key被设置为0.

function GetCharFromVirtualKey(Key: Word): string;
  var Buffer: array[0..255] of Char; 
      ScanCode: Cardinal;
begin
  if Key = VK_PAUSE
    then ScanCode := $45 shl 16
    else ScanCode := MapVirtualKey(Key, 0) shl 16;
  if Key in [33..46, 91..93, 108, 111, 144, 163, 165]
    then ScanCode := ScanCode + $1000000;

  GetKeyNameText(ScanCode, Buffer, SizeOf(Buffer));
  result := Buffer;
end;

procedure TMyForm.Edit1KeyDown(Sender: TObject; var Key: Word; var KeyChar: Char; Shift: TShiftState);
  var test: string;
begin
  if (KeyChar <> #0) then Key := …
Run Code Online (Sandbox Code Playgroud)

windows delphi firemonkey delphi-xe3 firemonkey-fm2

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