我有一个函数可以关闭应用程序中除主窗体之外的所有窗体procedureCloseOpenForms(constComponent:TComponent);vari:Integer;beginfori:=0topred(Component.ComponentCount)dobeginCloseOpenForms(Component.Components[i]);ifComponent.Components[i]isTFormthenbeginTForm(Component.Components[i]).OnCloseQuery:=nil;TForm(Component.Component
我注册了一个UPnP设备:varo:IUPnPRegistrar;W:string;R:HRESULT;beginw:=TFile.ReadAllText('UPnPDevice_Desc.xml');o:=CoUPnPRegistrar.CreateasIUPnPRegistrar;R:=o.RegisterDevice(w,...);end;文件UPnPDevice_Desc.xml:10OtherMicrosoft/SampleDevice/10000/urn:microsoft-com:device:SampleDimmerDevice:1-->{8C7B310D-90F8-4
我正在开发一个Windows7应用程序,它必须防止WinDVD在插入时触发新光盘可用性(即插入DVD)。背景信息:我正在为一家公司开发这个小应用程序,该公司必须同时比较两个电影播放器同时播放来自不同驱动器的同一张DVD。他们正在进行启发式质量测试,以确定目前最好的DVD播放器,并将其捆绑到他们的新PC系列中。目前他们最好的选择似乎是WinDVD,因此所有其他测试都必须针对它进行。问题是,当他们插入第一张DVD时,默认播放器WinDVD启动就没问题了。然后当他们插入第二张光盘时,默认播放器首先响应,因此他们被迫关闭窗口并打开他们正在测试的另一个播放器。这是为许多电影完成的,这些电影代
有时需要从命令行打开新程序(例如,WindowsPowerpoint演示文稿作为幻灯片可以通过命令行“powerpnt.exe/s”打开),将此程序最大化并将其置于最前面桌面作为用户可以看到和使用的第一个程序。如果用户直接在命令提示符中输入命令,默认情况下会发生这种情况,因为命令提示符是事件窗口。但问题是-如果命令行是从后台进程执行的,如何做到这一点-例如来自WindowsTaskScehduler的自定义Windows服务应用程序-在这两种情况下,新窗口都不会作为第一个窗口出现。目前我只能想象非常困难的解决方案(其缺点是它们需要编码并且不能从任务计划程序中使用):可以尝试获取已打开程
几周前,一位用户报告说我程序的GUI缩小了。今天我在多显示器模式下启动我的笔记本电脑并且可以重现问题:在Windows启动时,主窗体的大小是325x243像素而不是648x700。我没有一行代码来控制表单的宽度/高度。位置设置如下:MainForm.Position:=poDefault。用户无法调整表单大小(BorderStyle:=bsSingle)。是什么导致了这样的怪异?这是我第二次启动带有附加显示器的笔记本电脑。第一次一切正常。会不会和这个多显示器配置有关?如果编译器不生成与表单大小相关的代码,那么它就像是某个外部程序将代码注入(inject)我的程序以更改其大小。这是有道理
我有一个MicrosoftSculptErgonomicDesktop它有额外的功能键。另请参阅我关于SuperUser的问题,"Whatarethefunctionsofthemultimediakeys?".有一些用于charmbar功能的键,有些我还没有识别。由于Windows7没有这些功能,我想我可以编写一个应用程序来使用这些键做一些有用的事情。这些键的虚拟键码是什么? 最佳答案 我使用一个简单的测试应用程序自行解决了这个问题:F5=Search=1691132=VK_SHIFT+VK_LWIN+VK_F21F6=Share
我正在使用的应用程序中有几个线程。这些线程设置为FreeOnTerminate,我不允许更改此行为。我看到老开发人员在主线程中等待某些信号的方式有些奇怪,如下所示:让:varFWaits:arrayofTEvent;varFThreads:arrayofTBkgThread;constC=10;对于每个线程,我们有一个事件,然后Length(Threads)=Length(FWaits)forI:=0toC-1dobeginFWaits[I]:=TSimpleEvent.Create;FThreads[I]:=TBkgThread.Create(FWaits[I]);//Thehand
我在Delphi中有一个程序,它以25赫兹(每秒25次)的速度从外部应用程序接收帧,然后通过创建1-2个额外的帧将其转换为60赫兹(每秒60帧)。我需要通过不断构建帧缓冲区并从此处从单独的线程输出帧来输出这些额外的帧。问题是1000/60是16.66667,这意味着我不能只在16或17毫秒的“间隔”中发送帧,我需要它更精确。我如何在Delphi/Windows中执行此操作? 最佳答案 使用multimediatimer通过Win32APItimeSetEvent()或CreateTimerQueueTimer()功能。
以下代码在不同的机器上得到不同的结果。一台机器只提供桌面文件夹(不需要),另一台机器提供桌面文件夹和计算机,映射驱动器(需要)。procedureTForm1.Button1Click(Sender:TObject);varDirectory:String;beginFileCtrl.SelectDirectory('Caption','Desktop',Directory,[sdNewUI,sdShowEdit]);end;它提供的一台机器:在另一个它给出:这感觉像是Windows设置,但我不确定从哪里开始。使用DelphiXE,Windows10。任何想法表示赞赏。感谢您的宝贵时间
我有一个包含一些非模态表单的应用程序,每个表单都有自己的图标。我需要任务栏上所有窗体的图标在最小化/恢复时不会消失,经过一些测试,这是我的解决方案。申请Application.Initialize;Application.CreateForm(TForm1,Form1);Application.Run;TForm1-带有一个TButton的主窗体procedureTForm1.btn1Click(Sender:TObject);beginTForm2.Create(Application).Show;end;procedureTForm1.FormCreate(Sender:TObje