Tag: delphi

如何从另一个Windows应用程序获取Chrome 28的当前URL?

在Chrome V27之前,您可以枚举Chrome子窗口控件以进入编辑字段并从那里读取字符串值以获取当前打开的URL。 不幸的是,除了主窗口(Chrome_WidgetWin_1)和网页标签(Chrome_RenderWidgetHostHWND)之外,Chrome 28已经切换到新的渲染引擎(Blink)并且不再使用Windows控件。 如果有人能指出从另一个(Win32)应用程序获取当前打开的Chrome URL的替代方法,我将不胜感激。

如何从连接到PC的移动设备发送和读取短信

我正在构建一个Windows桌面软件,它将响应SMS请求并自动发送短信作为回复。 该软件已准备就绪,工作正常,但它只适用于诺基亚手机,前提是必须首先安装诺基亚的PC套装才能使我的应用程序运行。 但现在我的客户想要更换他的手机,所以他希望我改变编程,以便它适用于任何手机。 我不知道该怎么做? 有人可以帮我这里。 如果需要,我准备重新编写整个应用程序。 我首选的平台是Delphi,VB.NET和VB6。

来自delphi打包记录的正确结构布局

我正在将delphi应用程序转换为C#。 有一堆打包的记录,根据几周前我问过的类似问题,转换成课程会更好。 但是,我被告知我需要将它们转换为结构体,我可以使用一些帮助。 我将使用BinaryReader从文件中读取并将值分配给结构体内的字段。 *注意,我正在阅读的文件是使用Delphi和打包记录制作的。 这是一个示例结构: delphi: Testrec = packed record now: TDateTime; MinLat: longint; MinLong: longint; Firsttime: TDateTime; MinAlt: single; MinFirst: single; MinDepth: single; MinSpeed: single; MinBot: single; res3: single; res4: single; res5: single; res6: single; MaxLat: longint; MaxLong: longint; Lasttime: TDateTime; MaxAlt: single; MaxFirst: single; MaxDepth: single; MaxSpeed: single; MaxBot: single; res9: single; […]

如何从服务接收OutputDebugString?

我正在尝试使用以下代码捕获所有OutputDebugString消息(包括来自服务的消息)。 它运行正常,直到我迁移到Windows 7。 问题是,由于Windows Vista服务在低级别的Session#0中运行,有些人说它不可能捕获它们而一些它是不可能的 。 你怎么看? 是否可以通过增加一些权限来修改以下代码,以便能够从Session#0接收OutputDebugString消息? 换一种说法; 是否可以在会话#0中与会话#0共享DBWIN_BUFFER? 我想它应该是可能的,因为例如DebugView可以做到这一点,并且我看不到任何服务助手会将这些消息(例如通过命名管道)从Session#0发送到GUI正在运行的Session#1。 问题将是安全设置中的IMO。 任何人都可以建议我如何修改它们? type TODSThread = class(TThread) protected procedure Execute; override; end; … procedure TODSThread.Execute; var SharedMem: Pointer; SharedFile: THandle; WaitingResult: DWORD; SharedMessage: string; DataReadyEvent: THandle; BufferReadyEvent: THandle; SecurityAttributes: SECURITY_ATTRIBUTES; SecurityDescriptor: SECURITY_DESCRIPTOR; begin SecurityAttributes.nLength := SizeOf(SECURITY_ATTRIBUTES); SecurityAttributes.bInheritHandle := True; SecurityAttributes.lpSecurityDescriptor := @SecurityDescriptor; if not InitializeSecurityDescriptor(@SecurityDescriptor, […]

如何在C#中创建DLL并在Delphi XE6中调用

我使用File / New Project / Class Library在VS2013中创建了一个DLL。 然后我尝试在Delphi中动态加载它。 但Delphiis为程序GetProcAddress返回NIL 。 我的C#和Delphi代码看起来就像我在下面发布的那样。 在代码中, GetProcAddress返回NIL 。 请告知我是否遗漏了什么。 C#代码 using System; namespace TestDLL { public class Class1 { public static string EchoString(string eString) { return eString; } } } delphi代码 Type TEchoString = function (eString:string) : integer;stdcall; function TForm1.EchoString(eString:string):integer; begin dllHandle := LoadLibrary(‘TestDLL.dll’) ; if dllHandle 0 then […]

从不使用标签控件的对话框中获取文本?

这是我之前的问题的延续如何压缩Inproc COM服务器显示的对话框 。 背景: 回顾一下我的情况:我有一个从第三方用Delphi编写的Inproc COM服务器。 如果它捕获特定类型的错误,我调用的函数之一将显示错误消息对话框。 问题是我正在尝试批量处理数据,而我正在使用的数据源导致错误对话框弹出很多(感谢我之前的问题的答案,它现在自动关闭,我能够运行它到完成后,它会显示对话框并要求有人按OK 9923次)。 进程将阻塞,直到消息框关闭。 题: 我想更好地记录错误对话框所说的内容。 但是,任何获取对话框正文的尝试都失败了。 //Snip private void StartWindowListener() { //Queue the watcher on the message pump if we are not watching. if (_watcherRunning == false) { _watcherRunning = true; _dummyForm.BeginInvoke(new Action(() => { _watcherRunning = false; //If we are not inside the com object don’t enumerate. […]

在没有类型库的情况下使用C#中的COM dll

我需要使用很久以前在Delphi中开发的COM组件(dll)。 问题是:dll不包含类型库……并且.NET中的每个互操作function(例如,TlbImp)似乎都依赖于TLB。 这个组件已经在Delphi程序中使用了很多年没有问题,因为“使用Delphi的COM对象并不是什么问题,因为我们知道接口”(引用Delphi开发人员)。 有没有办法在没有TLB的情况下从c#中使用这个DLL? 我尝试使用DLL作为非托管,但它导出的唯一方法是DllUnregisterServer , DllRegisterServer , DllCanUnloadNow和DllGetClassObject 。 我知道我将要使用的类和函数的名称,如果这可以有任何帮助。 更新:我已经尝试过实施Jeff的建议,但是我收到了这个错误: “无法将’ComTest.ResSrvDll’类型的COM对象强制转换为接口类型’ComTest.IResSrvDll’。此操作失败,因为对于具有IID'{75400500-939F-11D4-9E44-0050040CE72C}的接口的COM组件上的QueryInterface调用’由于以下错误而失败:不支持此类接口(来自HRESULT的exception:0x80004002(E_NOINTERFACE))。“ 这就是我所做的: 我从Delphi中的一个人那里得到了这个接口定义: unit ResSrvDllIf; interface type IResSrvDll = interface [‘{75400500-939F-11D4-9E44-0050040CE72C}’] procedure clearAll; function ResObjOpen(const aClientID: WideString; const aClientSubID: WideString; const aResFileName: WideString; aResShared: Integer): Integer; {safecall;} … end; implementation end. 从这个我做了这个界面 using System.Runtime.InteropServices; namespace ComTest { [ComImport] [Guid(“75400500-939F-11D4-9E44-0050040CE72C”)] [InterfaceType(ComInterfaceType.InterfaceIsIUnknown)] public interface IResSrvDll […]

从音频文件而不是麦克风识别语音

如何对来自音频文件(.mp3,wav)而不是麦克风的语音进行语音识别? 我希望能够从C#.NET和Delphi中做到这一点。

从Delphi调用C#dll

我用单一方法编写.Net 3.5 dll,由Delphi .exe调用。 不幸的是它不起作用。 步骤:1。使用以下代码创建C#3.5 dll: public class MyDllClass { public static int MyDllMethod(int i) { MessageBox.Show(“The number is ” + i.ToString()); } } 转到assembly属性 – >assembly信息并选中“使assemblyCOM可见” 使用RegAsm.exe注册我的DLL 这会引发Delphiexception,表明它无法连接dll。 从非托管代码启用C#managed dll所需的步骤是什么? 有没有人熟悉这个主题的好例子? 谢谢

从C#.NET应用程序调用Delphi DLL

编辑:我在下面发布了一个更好的实现。 我把它留在这里,所以回答是有道理的。 我已经完成了大量搜索在Delphi中编写DLL的正确方法,并能够从C#调用它,传递和返回字符串。 很多信息都不完整或不正确。 经过多次试验和错误,我找到了解决方案。 这是使用Delphi 2007和VS 2010编译的。我怀疑它在其他版本中也能正常工作。 这是Delphi代码。 请记住在项目中包含版本信息。 library DelphiLibrary; uses SysUtils; // Compiled using Delphi 2007. // NOTE: If your project doesn’t have version information included, you may // receive the error “The “ResolveManifestFiles” task failed unexpectedly” // when compiling the C# application. {$R *.res} // Example function takes an input integer […]