Articles of delphi

把Delphi从Delphi / Pascal转换成Java

我需要使用Delphi / Pascal语言阅读在Windows SO中创build的二进制文件。 我知道这个文件是固定长度的,前8个字节是双精度的。 我把这个文件从Windows SO拷贝到了Ubuntu SO上。 当我尝试读取这个文件,在Ubunto SO,使用Java语言,我看到:Double = 84000 [0, 0, 0, 0, 0, -126, -12, 64] 所以我在Java内部创build了同样的double(84000),运行Ubuntu SO: Double yourDouble = (double) 84000; byte[] bytes = new byte[8]; java.nio.ByteBuffer.wrap(bytes).putDouble(yourDouble); 看看字节数组我看到: [64, -12, -126, 0, 0, 0, 0, 0] 显然,字节数组是倒置的。 有反正读这个文件? 或者我需要反转字节数组? 编辑:是倒转的,因为大endian e小endian?

有没有办法跟踪TComboBox的滚动条消息?

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

如何使用GetProcessImageFileName?

我试图使用GetProcessImageFileName,但我得到以下错误: 未声明的标识符:'GetProcessImageFileName' 我已经尝试将PsAPI和TlHelp32添加到使用条款中,但尚未解决问题。

应用程序由用户或其他应用程序启动

这是一个非常普遍的问题:我想知道是否有可能find一个应用程序(任何types的应用程序,不pipe是一个delphi应用程序还是java或其他)是由用户还是由另一个应用程序启动的? 如果可能的话,我看到一个应用程序被另一个应用程序调用,我可以找出什么是“父亲”应用程序,那叫做新的程序? Thnx提前! 编辑:也许这是太普遍 – 我怎样才能看到一个Delphi应用程序是否与Delphi本身的父应用程序,例如一个应用程序是由服务启动,我需要find该服务?

检查ReadDirectoryChanges是否适用于给定的path

有什么方法可以testingReadDirectoryChanges是否适用于给定的path? (我假设它不会在Linuxnetworking共享上工作)。 我想在这样的path上调用ReadDirectoryChanges将返回一个错误代码,但我目前无法testing。 任何人都知道这是否有效? 任何其他方式来testing它?

在TBevel上TPanel的开销是多less?

我正在做一个项目,他们基本上使用TPanel的唯一目的是显示一个斜面(也许devise时间方便面板超过斜angular)。 好吧,我知道TPanel比TBevel重。 其他的东西,每个TPanel创build一个用户对象,这是一个有限的资源。 我想知道的除了用户对象之外,TPanel的开销是多less? 它是不是存在旁边(特别是在现代机器)。 如果你正在研究这样的系统,你会build议: 返回并将所有TPanel更改为TBevel。 说:“好的,不好的,以后不要再做了”或者说 这是一个小问题,devise时间的方便是非常值得的。

无论用户设置如何创build没有任何框架的窗口?

我需要编写一个应用程序,在应用程序的两个实例中显示两个不同的图片。 这些图片必须看起来好像它们并排​​放在同一个窗口的canvas上,但由于内部的原因,它必须是两个不同的应用程序,而不是一个单一的应用程序。 无论用户的Windows设置如何,是否有任何方法可以closures窗口框架? 我仍然想保留标题栏和closures/最小化/最大化button。 如果两个(或多个)窗口看起来像一个单一的给用户反应,奖励点。 一个delphi的例子会很好,但我可以做一个提示标志或任何设置使用Win32 API(请不要dotNET)。

使用消息控制Windows中的写字板

我试图find一个可靠的方式来控制Windows的写字板,我成功地将其embedded到应用程序中作为子窗口。 打印文档之后要执行的一个命令是“打印预览”。 PostMessage似乎是一个很好的工具,但我很努力地find一个没有成功的写字板接受命令的参考,更不用说在WindowsXP机器以及Windows Vista 7和8上运行的命令。 我特别感兴趣的命令列表是: 打印 打印预览 closures而不保存(以比杀死进程更优雅的方式) 有人可以分享一些使用消息控制写字板的提示,或者可能以不同的方式?

媒体播放器作为Windows服务

我一直在寻找信息一段时间,但一直没能find有用的东西。 我们正在build造一种SmartCar复杂系统,它可以控制汽车中的所有东西。它是一个开发项目,这里没有什么“重新发明轮子”,只是完全从头开始。 由于将会有相当的负担,我们build立了一个基于i5 proc和8GB ram的PC,在Intel的S335 SSD硬盘上运行Windows Server 2012 Datacenter。 到目前为止,主控制器作为服务运行,并且对locking/解锁,侧视镜移动,窗口移动,完全自动电子控制,点火,灯光等操作都响应良好。但是,我们还是无法获得从它播放声音… 我们全部用作服务的原因是因为它根本没有显示器,而是通过WiFi和3G与Android平板电脑和手机以及Windows平板电脑进行通信。 我们已经通过远程桌面连接尝试过了,但是这样做会浪费双方的资源,所以我们宁愿使用Tcp / ip客户端/服务器版本。 另外,由于需要hibernate/关机,以免浪费能源,瞬间开机是至关重要的,无需login即可在几秒钟内完成工作,这是完美的。 所以,我的问题是,我怎么能让一个音乐播放器作为服务运行,并播放audio文件,我们通过我们的remore应用程序select? 远程部分在这里不是问题,而是玩家的一部分。 我已经尝试了几个delphi演示音乐播放器示例代码转换成服务,但没有人发挥了声音。 我想这与通常不允许直接与用户界面交互的服务有关,但我知道这是可能的,只是不知道如何。 另外,我猜想它是不可能的,但仍然值得一问:如果我们想扩展它作为一个video播放器使用,这可以做到没有任何用户login? 如连接vga / dvivideo监视器,但只有在select播放时才显示video? (在这种情况下显示器将作为扩展显示器,从而不会显示任何login画面)。 我使用Delphi的所有服务。 任何信息,将不胜感激。 谢谢。

从可执行文件的path获取服务名称

我有一个正在运行的服务应用程序的可执行文件的path。 例如: C:\Program Files (x86)\Someapp\somesvc.exe 我想停下来,并开始它,为此,我想我需要得到服务的名称,因为这是在[这个]答案中概述。 我可能通过遍历HKLM\System\CurrentControlSet\Services的所有服务的所有registry项来获取此内容,并检查ImagePathregistry项是否与我的可执行文件path匹配。 这个解决scheme应该可以工作,但对我来说似乎是错误的 有一个更好的方法吗?