如何从另一个Windows应用程序中获取Chrome 28的当前URL?
到Chrome V27,您可以列举Chrome Child Window控件以获取编辑字段并从那里读取字符串值以获取当前打开的URL. 不幸的是,Chrome 28已切换到新的渲染引擎(眨眼),除了主窗口(Chrome_widgetwin_1)和网页选项卡(Chrome_renderwidgethosthwnd)外,不再使用Windows控件. 如果有人可以指出从另一个(Win32)应用程序获取当前打开的Chrome URL的替代方法,我会很感激. 解决方案 Chrome支持Windows可访问性API,因此您可以使用这些API来从Chrome(包括Broswer bar)以及网页中提取信息.将此API视为枚举窗口控件的更抽象的版本. 查看检查对象探索您可以访问的信息的工具 - 看起来确实可以使用地址栏和内容. 您可以使用 AutomationElement 一组类: 使用AutomationElement WindowL = automanter.
0 2024-04-15
编程技术问答社区
从Delphi调用dotNET并返回一个字符串
delphi应用程序如何调用导出函数(non-com)dotnet汇编,并使函数返回字符串? com不是我特定应用程序的可能解决方案.我可以控制通话的两端. 到目前为止我尝试过的东西-Delphi客户端 type TStrProc = procedure( var x: widestring); stdcall; function TryIt: string; var Handle: THandle; Proc: TStrProc; InData: widestring; OutData: widestring; begin Handle := LoadLibrary( 'DelphiToDotNet.dll'); if Handle = 0 then exit; @Proc := GetProcAddress( Handle, 'StrProc'); if @Proc nil then begin In
0 2024-04-15
编程技术问答社区
检测远程桌面连接的来源
这个问题告诉我如何告诉我检测远程桌面会话. 有人知道是否有可能从远程连接的初始化的位置找到? 解决方案 由于Windows中的使用Netstat在Windows中使用NetStat来检查您已连接到哪些端口以及在哪个端口上分析地址的地址,该地址使用了远程桌面使用的端口. 其他解决方案 @vegar,您可以使用WTSEnumerateSessions and WTSQuerySessionInformation 功能可检索此信息. 检查此检查此代码. program ProjectTsInfo; {$APPTYPE CONSOLE} Uses Windows, JwaWinType, JwaWtsApi32, JwaWinsock2, SysUtils, TypInfo; type PWtsSessionInfoAArray = ^TWtsSessionInfoAArray; TWtsSessionInfoAArray
0 2024-04-15
编程技术问答社区
以编程方式防止Windows 10在更新后自动重新启动
问题:是否有一种程序化方法可以防止Windows 10在更新后自动重新启动? 我们处理在Windows中运行的"关键任务"软件.通常,如果Windows自动更新会中断我们的流程,那是很糟糕的,因为这可能意味着在废纸材料中损失了钱(您无法停止并恢复,该工作必须从开始到完成不间断). 过去,我们能够通过在Windows注册表中设置一个参数(随着用户启用者的同意)来解决此问题,该参数将在登录用户时自动更新后自动重新启动.因此,将通知用户,而不是自动更新,而是需要重新启动的更新并在准备好时单击按钮.这适用于Windows Vista,7和8/8.1.但是,对于最新的Windows 10(我正在使用创建者的更新),该参数似乎没有效果,因为我观察到我的计算机通过自动更新,我知道注册表条目已经有效. 在我的研究中,我发现似乎是一个希望的地方,可以选择一个设置,其中Windows可以为用户提供安排更新的机会,而不是在Windows认为合适的时候自动进行更新(信息在这里).但是,我不确定
0 2024-04-15
编程技术问答社区
有什么工具可以将Delphi 7应用程序转换为C#和.Net框架?
我维护了在Delphi 7中编写的旧旧应用程序,尽管过去Delphi过去对我的服务非常好,但我现在仅将其用于该应用程序,并通过语言减少来找到我的技能.它的语法与我的java/ruby的"日常工作"语言太大了,所以我花了更长的时间才能进入编写新代码的凹槽,而且它太旧了,我没有使用过很多 interface s因此,没有管理代码,现在对我来说似乎很古老! 我的许多用户都转向Vista,这些用户可能会以兼容模式运行该应用程序,或者可能会根据其IT部门配置的PC配置而存在GPF问题,因此我必须对应用程序进行一些维护.我想知道我是否应该跳到更熟悉的堆栈. 是否有一个自动化工具可以将代码库转换为c#的腿部工作,使我专注于任何非标准组件上的转换?我正在使用一个嵌入式数据库组件,称为 absolutedatabase "> absolutedatabase bde bde bde compible&comptible and bde comprible&complocy intarts an
0 2024-04-14
编程技术问答社区
将C# COM服务器事件暴露给Delphi客户端应用程序
我的问题与这两个问题非常相似: c#c​​omponent Events? c# - 编写com服务器 - 事件不是在客户端发射 但是,对他们有用的是对我不起作用.类型库文件,没有任何事件定义的提示,因此Delphi看不到它.如您所料,该课程适合其他C#应用程序. com服务器工具: Visual Studio 2010 .net 4.0 delphi应用程序: Delphi 2010 Delphi 7 这是代码的简化版本: /// /// Call has arrived delegate. /// [ComVisible(false)] public delegate void CallArrived(object sender, string callData); /// /// Interface to expose SimpleAgent events t
0 2024-04-14
编程技术问答社区
从c#调用dll中的Delphi方法
我试图用以下签名在delphi dll中调用一种方法: function SMap4Ovr(const OverFileName : ShortString ; const Aclay : Integer ; const Acarbon : Double ; out errstr : ShortString): WordBool; 我正在使用C#中的以下导入: [DllImport("SMap.dll", CallingConvention = CallingConvention.StdCall, CharSet = CharSet.Ansi)] public static extern bool SMap
0 2024-04-13
编程技术问答社区
如何在C#中创建DLL并在Delphi XE6中调用
我使用文件/新项目/类库在VS2013中创建了DLL.然后,我尝试在Delphi中动态加载它.但是delphiis返回NIL程序GetProcAddress. 我的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(eStr
0 2024-04-13
编程技术问答社区
在64位.Net应用程序中导入32位dll
我有问题,自昨天以来,我一直在尝试解决它,但没有运气. 我有一个32位Delphi DLL,我想将其导入.NET WIN应用程序.该应用程序必须以任何CPU 模式构建.当然,抛出了异常的BadImageFormateXception,这意味着64位应用程序无法加载X86 DLL. 我四处搜索并找到了一个解决方案,说我必须做包装器,但对我来说并不清楚.谁能告诉我如何解决这个问题,有什么可能的方法可以使我可以将32位Delphi dll导入到基于任何CPU体系结构(64位,32位)或其他解决方案的程序中? 解决方案 一个总体想法可能是用管理的32位包装器DLL包裹您(未托管的)32位DLL,并使其可见.这允许通过其COM接口拨打包装器DLL. 您可以使用COM代理来使您的com dll显示为"流程com服务器". 请查看此问题,以获取有关此主题的更多信息:访问x644的访问x86 com .net . 其他解决方案 您要做的就是编写一个包装应用程序,该应用程序在32位进
0 2024-04-13
编程技术问答社区
在没有类型库的情况下从C#中使用一个COM dll
我需要使用以前开发的COM组件(A DLL).问题是:DLL不包含类型库...而.NET中的每个Interop功能(例如TLBIMP)似乎都依赖TLB.该组件已经在这里的Delphi程序中使用了很多年,没有问题,因为"使用Delphi的COM对象,这不是一个问题,因为我们知道接口"(Quote Delphi Developer). 有什么办法可以在没有TLB的情况下从C#使用此DLL?我已经尝试使用DLL作为未管理的DLL,但是它导出的唯一方法是DllUnregisterServer,DllRegisterServer,DllCanUnloadNow和DllGetClassObject.我知道我要使用的类和功能的名称,如果有任何帮助. 更新: 我已经尝试实施杰夫的建议,但是我遇到了这个错误: "Unable to cast COM object of type 'ComTest.ResSrvDll' to interface type 'ComTest.IResSrvD
0 2024-04-13
编程技术问答社区
我如何从服务中接收OutputDebugString?
我正在尝试抓住所有问题是,由于Windows Vista服务在低级会话#0中运行,有人说不可能抓住它们,还有一些.你怎么看? 是否可以通过增加一些权利来修改以下代码,以便能够接收我会说这应该是可能的,因为例如debugview可以做到这一点,我看不到任何可以从会话#0发送这些消息(例如,通过命名的管道)到1的#1的服务助手. . 问题将是安全设置中的IMO.谁能建议我修改它们? type TODSThread = class(TThread) protected procedure Execute; override; end; ... procedure TODSThread.Execute; var SharedMem: Pointer; SharedFile: THandle; WaitingResult: DWORD; SharedMessage: string; DataReadyEvent: THan
0 2024-04-13
编程技术问答社区
在WinForms输入焦点上自动弹出平板触摸键盘
当我在平板电脑模式下在Windows 10上运行Winforms(或Delphi,请参见末尾)时,触摸键盘不会自动弹出当输入框被聚焦时. 我相信这应该自动发生,而无需任何其他代码/设置. 对于测试,我拥有最简单的VS 2015 winforms桌面应用程序,带有单个 TextBox控制. 这只是Visual Studio创建的默认Windows comply c#project.没有添加代码,没有更改属性.只是从 toolbox 下降(再次不更改属性)来添加TextBox: : this.textBox1 = new System.Windows.Forms.TextBox(); this.textBox1.Location = new System.Drawing.Point(64, 27); this.textBox1.Name = "textBox1"; this.textBox1.Size = new System.Drawing.Size(100, 2
0 2024-04-13
编程技术问答社区
创建一个可以在Delphi应用中使用stdcall导入的C# DLL|可能吗?
我有一个我需要在C#中为DLL创建DLL的程序.该程序是用Delphi编写的,我有一个接口文件以代码到达.该界面使用stdcall调用约定. 是否可以创建一个符合接口的C#DLL,可以在Delphi应用程序中使用? 是否有一些示例代码演示如何将C#DLL编码到stdcall接口方法? 解决方案 这在纯C#中是不可能的,但是 brian Long的一份会议论文.尽管您没有这样做,但您可能会看到有些讽刺的曲折,但实际上直接支持了非托管的出口.我不知道Delphi Prism是否也是如此. 其他解决方案 我以前一直在这条路上.我选择的解决方案是创建一个 new c#组装(我后来将其移植到Prism)通过COM Interop暴露了我需要达到的功能.我是通过黑拳击中的API调用来简单的,我能够减少我必须在整个Interop障碍物上处理的课程数量. 我确实看了九头蛇,但是我想做的事情太过杀了……这是访问第三方SDK,该SDK在.NET组件中呈现以处理数据.如果您正
0 2024-04-12
编程技术问答社区
获取当前的鼠标指针类型
如何获得当前的全局鼠标光标类型(沙漏/箭头/..)?在Windows. 全局 - 我需要它,即使鼠标是我的应用程序的OUSIDE ,或者即使我的程序无风度. 在C#,Delphi或Pure Winapi中,没关系... 非常感谢您! 解决方案 在您多年后,它是时候回答我自己的问题了.以下是您检查当前的全局光标是否在C#中是沙漏(如果需要,请根据自己的需求扩展代码): private static bool IsWaitCursor() { var h = Cursors.WaitCursor.Handle; CURSORINFO pci; pci.cbSize = Marshal.SizeOf(typeof(CURSORINFO)); if(!GetCursorInfo(out pci)) throw new Win32Exception(Marshal.GetLastWin32Error());
2 2024-04-12
编程技术问答社区
在Delphi中,是否 "支持 "对nil引用调用方法?
零参考时以下Delphi程序调用方法并运行正常. program Project1; {$APPTYPE CONSOLE} type TX = class function Str: string; end; function TX.Str: string; begin if Self = nil then begin Result := 'nil' end else begin Result := 'not nil' end; end; begin Writeln(TX(nil).Str); Readln; end. 但是,在结构相似的C#程序中,System.NullReferenceException将被提高,这似乎是正确的. namespace ConsoleApplication1 { class TX { public string Str() {
2 2024-04-12
编程技术问答社区
在64位中从Delphi dll向C#调用者返回一个字符串
我有一个C#应用程序,该应用程序使用以下代码调用本机Delphi DLL: c# [DllImport("NativeDLL.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.StdCall)] public static extern int GetString(string out str); delphi function GetString(out a: PChar): Integer; stdcall; begin a := PChar('abc'); Result := 1; end; 在32位应用程序中正常工作.但是,当我同时编译C#Exe和Delphi DLL 64位时,我会遇到一个奇怪的问题.在Delphi调试器中拨打GetString的电话后,我可以看到.NET代码中的某个地方提出了一个异常,并且以下字符串显示在调试器输出窗口中:"检测到的c0
0 2024-04-12
编程技术问答社区
如何使用非托管导出将结构数组从.NET传递到Delphi(Robert Giesecke)?
我刚刚问并获得了我的问题的答案,该问题是:"无法返回无管理导​​出(Robert Giesecke)的自定义类型实例" - > 用无管理的出口(Robert Giesecke)无法返回自定义类型实例 我想知道(以及如何)是否可以使用Unmanaged Export(Robert Giesecke)将struct的数组从.NET传递到Delphi: 直接返回阵列 [DllExport] public static void CreateSampleInstance(out Sample[] sample) 在返回的结构中使用数组成员 [DllExport] public static void CreateSampleInstance(out Sample sample) 和 `public struct Sample { Other[] Others; }` 我在这里的问题是如何编写Delphi侧以及要在.net One中设置的属性.
0 2024-04-11
编程技术问答社区
如何在Delphi中用密码对字符串进行AES-128加密并在C#中解密?
我想用密码在Delphi中加密AES-128.我想将其上传到我的服务器,并能够在C#中对相同的密码进行解密. 在Delphi中,我使用的是Turbopower Lockbox 3: function EncryptText_AES_128(input: string; password: string): string; var Codec: TCodec; CipherText: AnsiString; begin Codec := TCodec.Create(nil); try Codec.CryptoLibrary := TCryptographicLibrary.Create(Codec); // Codec.StreamCipherId := BlockCipher_ProgID; Codec.BlockCipherId := Format(AES_ProgId, [128]); Codec.ChainMode
0 2024-04-11
编程技术问答社区
评价一个数学表达式的最佳算法?
评估数学表达的最佳算法是什么?我希望能够在某种意义上具有一个具有各种变量的公式,我可能需要使用不同的变量来评估数百次.因此,基本上,如果我最初可以解析公式,以便以某种方式对其进行优化,然后我可以根据需要将变量传递给此优化版本,每次为我产生结果. 我将在Delphi或C#中写这篇文章.我已经通过使用分流码算法写了类似的东西,但是每次我需要计算相同的公式时,我都必须经过解析阶段.必须有更好的方法来做到这一点. 解决方案 如果您想使用Delphi进行操作,则可以研究JclExprEval单元的工作方式,绝地代码库.几年前,我写过它(有点过分设计);它解析了功能和变量,可以将您递给您快速评估表达式的方法指针.通过参考传递变量,您可以直接更改它们,并将重新评估的表达式进行相应计算. 无论如何,其工作原理的基础知识可能对您有所帮助.表达式的递归解析很容易,并且通过建造树,您可以多次评估而无需重新分配. JCLEXPREVAL实际上为简单的堆栈计算机生成了代码,因此它可以比树解释快
0 2024-04-11
编程技术问答社区