Articles of delphi

什么是导致桌面盾牌图标覆盖* SOME *桌面上

我有一个C ++ Builder / Delphi应用程序。 它具有以下清单作为资源embedded: <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> <assemblyIdentity type="win32" processorArchitecture="*" version="1.0.0.0" name="Manufacturer.Division.MyName" /> <description>MyName</description> <dependency> <dependentAssembly> <assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="*" publicKeyToken="6595b64144ccf1df" language="*" /> </dependentAssembly> </dependency> <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2"> <security> <requestedPrivileges> <requestedExecutionLevel level="asInvoker" uiAccess="false" /> </requestedPrivileges> </security> </trustInfo> <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1"> <application> <supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}" /> <!– Win Vista and Win Serv […]

从Delphi直接调用Android NDK函数的困难

可以通过JNI和NDK从Delphi调用Android C函数。 为了实现这一点,相当多的工作,并build议直接调用NDK函数。 为此,我创build了一个小的示例文件来声明一个外部的C函数,这些函数是我在Delphi源代码中find的。 在<path to delphi>\source\rtl\android更具体。 我创build了一个非常小的testing程序来testing直接从Delphi调用C函数的function。 所有源代码,你会发现下面,这是我目前正在testing。 unit DLL_external; interface const MIDI_Lib = '/usr/lib/libmiditest.so'; test_fun = 'test_1'; function test_1 (n: Integer): Integer; cdecl; external MIDI_Lib name test_fun; implementation initialization finalization end. 初始化和终结是必要的,因为链接错误是指一些缺less的初始化和终止代码。 调用类: unit DLL_Test_Main; interface uses System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants, FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.StdCtrls, DLL_external; //{$I Androidapi.inc} type TForm1 […]

如何获得USB闪存驱动器的制造商序列号?

如何在Delphi中检索USB闪存驱动器的制造商序列号? 我试过这个: function GetDiskVolSerialID(ADriveName: Char): Cardinal; var DiskDrive: string; FileSystemFlags: DWORD; VolumeSerialNumber: DWORD; MaximumComponentLength: DWORD; begin DiskDrive := ADriveName + ':\'; GetVolumeInformation(PChar(DiskDrive), nil, 0, @VolumeSerialNumber, MaximumComponentLength, FileSystemFlags, nil, 0); Result := VolumeSerialNumber; end; 但它不会返回正确的结果!

一个独立的Delphi应用程序,也可以作为Windows服务安装

在Delphi中,您可以创build一个独立的Windows VCL Forms应用程序。 您也可以创build一个Windows服务应用程序。 是否可以将这两个应用程序合并为一个独立的应用程序,也可以作为Windows服务来安装?

检查特定进程运行的快速方法

要检查进程是否正在运行,可以使用“CreateToolHelp32SnapShot”Windows API函数并枚举正在运行的进程。 示例C / C ++代码在答案问题中给出: 检查是否有一个特定的进程正在C ++的窗口上运行 我的问题是,如果你知道你正在寻找一个特定的过程,是否有更快的方法来find答案,而不必依次检查每个过程? 我们需要定期检查我们的远程支持工具TeamViewer.exe是否正在运行。 请注意,TeamViewer是由第三方编写的,我们无法控制它或者EXE的内部知识。 编辑: TeamViewer提供了一些有关其内部过程的信息,可以用来加速这个过程(参见接受的答案)。 答案还显示了如何加速对任何进程的检查(通过保存进程ID)。

如何检测表单何时被最大化?

我想要检测何时将最大化表单来保存某些设置(与大小和位置无关)并修改大小和位置。 有一个通用的方法来做到这一点? 我试图捕捉像这篇文章中的WM_SYSCOMMAND消息。 它可以很好地用于从菜单最大化,通过最大化button,但是当我按下WIN + UP键时,它不会被触发。 有没有人知道如何捕捉最大化事件包括WIN + UP键盘的情况下的普遍方式? 谢谢

如何使用dbghlp和pdb获取结构体的字段名称和偏移量

我想用与windbg的dt命令相同的方式来转储结构的字段和偏移量。 比方说,我想转储微软公共符号中的_PEB结构(因为windbg的DT命令起作用)。 从MSDN文档中,我了解到,SymFromName函数应该能够做到这一点,下面是我已经尝试失败SymFromName与LastError 126(无法find指定的模块)的代码。 从注册的callback我得到以下输出: CBA_SET_OPTIONS CBA_SET_OPTIONS CBA_SET_OPTIONS CBA_EVENT: code 0 desc DBGHELP: Symbol Search Path: symsrv*symsrv.dll*C:\Symbols*http://msdl.microsoft.com/download/symbols DBGHELP: Symbol Search Path: symsrv*symsrv.dll*C:\Symbols*http://msdl.microsoft.com/download/symbols CBA_DEFERRED_SYMBOL_LOAD_START: C:\Windows\Sysnative\ntdll.dll CBA_DEFERRED_SYMBOL_LOAD_PARTIAL: C:\Windows\Sysnative\ntdll.dll CBA_EVENT: code 0 desc DBGHELP: No header for C:\Windows\Sysnative\ntdll.dll. Searching for image on disk DBGHELP: No header for C:\Windows\Sysnative\ntdll.dll. Searching for image on disk CBA_EVENT: code 0 desc DBGHELP: […]

TRichEdit和URL突出显示问题

我正在使用当前代码来突出显示TRichEdit上的URL: procedure TForm1.WndProc(var Message: TMessage); var p: TENLink; strURL: string; begin if (Message.Msg = WM_NOTIFY) then begin if (PNMHDR(Message.lParam).code = EN_LINK) then begin p := TENLink(Pointer(TWMNotify(Message).NMHdr)^); if (p.Msg = WM_LBUTTONDOWN) then begin SendMessage(RichEdit1.Handle, EM_EXSETSEL, 0, Longint(@(p.chrg))); strURL := RichEdit1.SelText; ShellExecute(Handle, 'open', PChar(strURL), 0, 0, SW_SHOWNORMAL); end end; end; inherited; end; procedure TForm1.InitRichEditURLDetection; var mask: Word; […]

delphi的主题工具栏可以在工具button之间居中分隔吗?

我注意到一个相当烦人的Delphi工具栏怪异。 我有一个TToolbar有逻辑组的图标。 为了使分组脱颖而出,我想使用分隔符button,风格tbsDivider 。 当我这样做的时候,看起来像这样: 请注意每个图标之间的双垂直线。 右边的一个位于分隔工具button的中间。 左边的一个在分离工具button的左边。 所以,我可以切换到删除中间行的tbsSeparator : 但是我不喜欢那个,因为我希望分隔线位于中间。 我看了一下我的真实应用程序的古老版本,发现它已经居中分隔符。 看来,这是可能的Windows主题被禁用。 以下是tbsDivider和删除的应用程序清单: 这是我正在寻找的布局。 当主题活跃时,这是否可以实现? 我确实在Embarcadero论坛上find了关于这个问题的讨论,但是没有有用的见解: https : //forums.embarcadero.com/message.jspa?messageID=467842 为了完整起见,以下是.dfm文件的相关摘录 object ToolButton1: TToolButton Left = 0 Top = 0 ImageIndex = 0 end object ToolButton2: TToolButton Left = 23 Top = 0 Width = 16 ImageIndex = 1 Style = tbsDivider end object ToolButton3: […]

如何在Windows 7 Aero任务预览中创build自己的控件?

我有两个有关Windows 7任务预览的问题。 在Delphi中,我想在下面的屏幕截图中突出显示的区域内创build自己的button。 1)是否有可能在任务预览窗口(在Windows 7中)创build我自己的控件,如Winamp可以做的? 或者这只是一些有限的多媒体扩展? 2)如果可以绘制自己的button,我应该从哪里开始? 示例或Windows API指南对我有帮助。 非常感谢