草庐IT

windows - Delphi Firemonkey Cross Platform - 传递 Windows 句柄的通用方法

我在我的第二个适用于Windows和OSX的Firemonkey应用程序中埋头苦干,慢慢地转换我的函数库以处理跨平台问题。我正在尝试创建一个通用的SelectDirectory函数,该函数将为Windows或OSX运行特定于平台的代码。我让SelectDirectory在两个单独调用的平台上工作得很好,但特定于Windows的平台需要hwndparent句柄才能运行。这是在IFDEFMSWINDOWS指令中运行的(就像OSX在其编译器指令中一样)。如何将通用句柄传递给此函数,或者如何引用Application.MainForm或可以在此函数内转换为Windows句柄的内容?我希望避免在

windows - 有没有办法跟踪来自 TComboBox 的滚动条消息?

在我的扩展TComboBox类中,我覆盖了ComboWndProc()过程处理程序,但是我无法从列表的滚动条中检测到CN_VSCROLL和WM_VSCROLL消息(FListHandle).我基本上想使用winapi实现无限滚动。我想,为了做我想做的事,我基本上需要知道滚动条的轨迹条位置,所以当轨迹条触摸下行按钮时,我会向字符串添加更多数据。这个想法很简单,也许很天真,但我可以从那里开始,看看我会遇到什么问题。有可能做这样的事情吗?有没有办法跟踪来自TComboBox的滚动条消息?更重要的是:如果是,如何?如果不是,为什么? 最佳答案

c# - 检查正在运行的特定进程的快速方法

要检查进程是否正在运行,可以使用“CreateToolHelp32SnapShot”WindowsAPI函数并枚举正在运行的进程。示例C/C++代码在回答问题中给出:CheckwhetheronespecificprocessisrunningonwindowswithC++我的问题是,如果您知道自己正在寻找一个特定过程,是否有更快的方法来找到答案而不必依次检查每个过程?我们需要定期检查我们的远程支持工具TeamViewer.exe是否正在运行。请注意,TeamViewer是由第三方编写的,我们无法控制它或了解EXE的内部结构。编辑:TeamViewer提供了一些有关其流程内部结构的信

windows - 检测键盘或鼠标事件是否由软件触发

在Windows上运行的桌面应用程序中,有没有一种方法可以确定键盘或鼠标事件是由硬件触发的,而不是由TeamViewer、Steam或其他远程桌面软件等应用程序触发的?我的目的不是防止机器人,而是防止远程访问应用程序。RawInputAPI似乎可以让我检测到使用SendInputAPI发送的虚假事件。是否正确? 最佳答案 SetWindowsHookEx()提供的低级键盘/鼠标Hook报告输入是由实际设备生成还是由应用程序代码注入(inject)。对于low-levelkeyboardhook,钩子(Hook)提供了一个指向KBDL

windows - 如何使用GetProcessImageFileName?

我正在尝试使用GetProcessImageFileName但我收到以下错误:Undeclaredidentifier:'GetProcessImageFileName'我已经尝试将PsAPI和TlHelp32添加到uses子句中,但它并没有解决问题。 最佳答案 我不确定这个函数是否由RTL在任何地方提供,但你总是可以直接导入它:functionGetProcessImageFileName(hProcess:THandle;lpImageFileName:LPTSTR;nSize:DWORD):DWORD;stdcall;exte

windows - 如何使用 Windows API 将菜单背景渐变复制或复制到位图上?

我正在尝试(未成功)将Windows菜单栏的背景渐变复制/复制到位图上。在下面的IconToBitmap函数中,FillRect(一厢情愿地)使用GetSysColorBrush(COLOR_MENU)尝试让它按照Windows中的方式绘制菜单背景(毫不奇怪,画笔不是渐变,但值得试一试。)它下面的BitBlt是一种“作弊”的尝试。捕获一部分已经绘制的菜单栏并使用它。这也不起作用,我怀疑原因可能是因为在主窗口的WM_CREATE期间调用了函数IconToBitmap(我不确定菜单栏是否存在于窗口创建的早期。)我之前确实需要背景窗口首先可见,这就是在处理WM_CREATE时调用该函数的原因

windows - 更新显卡不更新opengl32.dll

上周我一直在尝试在正方形上绘制纹理,但无济于事。正方形绘制但没有纹理。我正在使用OpenGL、DelphiXE3和Windows10。问题是glGenerateMipmap函数。我的旧版opengl没有MipMap函数。所以我用更新的东西(OGL4.6)替换了我的卡,它现在具有这些功能。但它仍然不起作用。问题是,旧的opengl32.dll没有改变,它仍然没有这些功能。所以问题是:程序如何找到MipMap函数?是否有可能以某种方式使用新功能更新opengl32.dll?或者我的程序是否需要引用其他一些dll?还是应该更新winapi.opengl单元?根据khronos,除非设置了Mi

windows - 应用程序由用户或其他应用程序启动?

这是一个非常普遍的问题:我想知道是否有可能找出一个应用程序(任何类型的应用程序,无论它是delphi应用程序还是java或其他)是由用户还是由另一个应用程序启动的?如果可能并且我看到一个应用程序被另一个应用程序调用,我能否找出“父”应用程序是什么,即所谓的新程序?提前致谢!编辑:也许它太笼统了——我如何才能看到Delphi应用程序是否具有Delphi本身的父应用程序,例如一个应用程序是由一项服务启动的,我需要找到该服务吗? 最佳答案 每个正在运行的应用程序都有一个启动它的父应用程序(根系统进程除外)。无法判断是否是用户直接点击应用程

windows - 一些实现命名管道通信的来源 btw 服务应用程序或帮助

我正在实现我自己的命名管道客户端/服务器类,但我遇到了太多麻烦,而且在Internet上没有太多相关信息。我已经找到了很多使用管道但使用vlc应用程序的实现,但我正在使用服务应用程序。我也接受有关如何使用管道的提示。我的实际问题是:当服务器应用程序只从客户端收到一条消息时,此后我的服务器不能再使用PeekNamedPipe()了。我从GetLastError收到的错误消息是“管道的另一端有一个进程”,但是......我不知道如何解决这个问题。如果我关闭客户端应用程序,我收到的消息是“管道正在关闭”,此后我无法建立客户端通信。谢谢 最佳答案

windows - 是否可以从一个应用程序访问另一个应用程序的内存?如何?

标题有点乱。但是,我想做的是:我在应用程序中有一个按钮(来自TButton类的Button1)。我想获取此按钮的指针值并从第二个应用程序检查它的属性。有人可以说这是否可能?如果不是,请解释原因?谢谢。重新打开,因为我在互联网上得到了其他信息。如果我使用像?读取进程内存例子:http://www.codeproject.com/KB/threads/int64_memsteal.aspxhttp://forum.cheatengine.org/viewtopic.php?p=4150408&sid=2358f118bab9f54b032d99377aed0545