草庐IT

Delphi 12.0

全部标签

windows - 在 Delphi 中使用 COM 支持在 DLL 和 .EXE 之间切换

我有以下情况:我有一个delphi应用程序{$APPTYPEGUI}。(APP1)如果APP1启动,它会运行代码begin和end.,就像它应该的那样。稍后,APP1将被转换为DLL(另一个应用程序将执行此操作-APP2)。APP2添加IMAGE_FILE_DLL标志到NTFileHeader中的CharacteristicsAPP1。然后APP2尝试使用LoadLibrary加载DLL(APP1)(或加载dll的其他一些COM命令)但它返回错误:WindowsencounteredaninternalerrorwhileinitializingCOMlibraries.我已经用C项目

windows - 应用程序如何在 Delphi 中关闭后启动自己的服务?

我有一个应用程序,用户可以通过两种不同的方式启动它,作为普通应用程序或作为Windows服务。当服务已经在运行时(系统托盘中有它的图标)并且用户尝试启动应用程序(不仅仅是通过单击托盘图标打开,而是再次单击Start>Applications>Blahblah),它说:“应用程序已经作为服务运行,你想关闭服务并启动应用程序吗?”当用户单击"is"时,应用程序关闭服务并正常启动自身申请。发生这种情况时,我会放置一个标志,指示用户曾经停止过该服务,当他们关闭应用程序时,软件会看到该标志,并且该服务必须重新开始运行,因为它之前已关闭,无法作为普通应用程序启动.我试着把:WinExec(PCha

windows - Delphi:通过套接字发送多个字符串?

我目前正在使用delphi6(是的,我知道..但到目前为止它已经完成了工作。)我正在使用Serversocket和客户端套接字。当我的客户端连接到我的服务器时,我想让它发送一些信息,比如计算机名、LANIP、操作系统名称、ping。目前我只有客户端向服务器发送计算机名,我想知道如何发送多个信息,并在我的网格中相应地设置它?这是源代码:客户:unitclient1;interfaceusesWindows,Messages,SysUtils,Variants,Classes,Graphics,Controls,Forms,Dialogs,ScktComp;typeTForm1=class

windows - Delphi静态或动态链接到windows dll

我知道在加载时隐式链接到库可以提高性能,因此我想知道在编译时以这种方式链接是否是一种好的做法,从而增加可执行文件的大小(诚然这只是边际)相比在运行时显式链接。我的问题是,当针对位于System32中的MicrosoftWindowsdll文件进行链接时,在加载时进行链接是否“更好”,因为您几乎可以确定库将存在或遵循显式方法?使用的语言是Delphi(pascal),相关库是WTsAPI32.dll-终端服务。编辑:正如所指出的那样-我选择的语言不正确并且已被修改。此外,由于在Unix中只有真正广泛链接到库,我关于可执行文件大小的评论可以省略,我相信当时我实际上指的是静态链接,它将库代码

windows - 如何在 Delphi 的多线程中加载一个 DLL?

也许我错过了什么,我不知道这里发生了什么。我正在尝试在TThread对象的多个实例中加载同一个DLL。这是我的DLL代码:libraryMyCalcFor32;usesSysUtils,Classes,uRunnerin'uRunner.pas';ExportsEVal;{$R*.res}beginend.这是uRunner.pas:unituRunner;interfaceusesSysUtils,Classes;functionEVal(Valor:WideString):WideString;stdcall;export;implementationfunctionEVal(Va

windows - 从 Delphi 启动 Windows 优化应用程序 (Windows 10)

我们有一个遗留的Delphi7应用程序,它启动Windows碎片整理和屏幕键盘应用程序,如下所示://DefragmentationapplicationShellExecute(0,'open',PChar('C:\Windows\System32\dfrg.msc'),nil,nil,SW_SHOWNORMAL);//On-screenkeyboardShellExecute(0,'open',PChar('C:\Windows\System32\osk.exe'),nil,nil,SW_SHOWNORMAL);两者都在WindowsXP上工作,但在Windows10上失败。我发现

windows - 从delphi中的文本段落中提取第一行

我将文本传递给一个函数。该文本可以包含任何内容,从单个字符一直到整本书。我需要提取第一个点赞并将其用作“标题”,这样我就可以命名一个文件,我将在其中保存该文本作为备份。我正在使用以下内容:functionGetTitle(varText:string):string;vartitle:string;position:integer;begintitle:='';position:=AnsiPos(#10,Text);ifposition=0thenbeginposition:=AnsiPos('.',Text);if(position=0)thentitle:=Textelsetitl

C到delphi转换

谁能告诉我我在转换过程中哪里出错了:C:typedefstruct_REGISTRY_EVENT{REG_NOTIFY_CLASSeventType;TIME_FIELDStime;HANDLEprocessId;ULONGdataType;ULONGdataLengthB;ULONGregistryPathLengthB;/*Containspathandoptionallydata*/UCHARregistryData[];}REGISTRY_EVENT,*PREGISTRY_EVENT;德尔福:_Registry_Event=recordEventType:REG_NOTIFY_

windows - 在 Windows 和 Delphi 中实现应用程序可移植性?

我们的这个应用程序不会写入Windows注册表或将其配置文件(例如INI文件)存储在用户配置文件中;相反,它将其配置文件存储在程序的目录中。维基百科有这样的说法Aportableapplication(portableapp)isacomputersoftwareprogramdesignedtorunindependentlyfromanoperatingsystem.ThistypeofapplicationisstoredonaremovablestoragedevicesuchasaCD,USBflashdrive,flashcard-storingitsprogramfile

windows - 在delphi中逆向加密

这段代码不是我写的,是以前的程序员写的。但是,我注意到他没有提供解密算法,导致加密无效。如何解密?functionEncrypt(jstr:String):String;varI:Integer;A:Real;beginifLength(jstr)=0ThenbeginResult:='';Exit;end;A:=0;forI:=0ToLength(jstr)doA:=A+(Ord(jstr[I])*Pos(jstr[I],jstr))/33;Result:=FormatFloat('0000000000.0000000000',A);ifPos(',',Result)>0thenbe