小编Iva*_*ark的帖子

与Delphi 2007的AsyncCall

我基本上想要的是启动AsyncCall并继续我的代码加载.我有接口部分,消耗大量的时间(600 + ms),我想在独立的线程中加载此代码.

我试图用AsyncCall这样的东西:

procedure Load;
begin
...
end;

initialization
  AsyncCall(@Load, []); // or LocalAsyncCall(@Load)
Run Code Online (Sandbox Code Playgroud)

但是,此Load过程实际上是在主线程中启动,而不是在新创建的线程中启动.如何强制将Load程序加载到除以外的任何线程中MainThread

我可以创建TThreadExecute这个,但我想强制AsyncCallLocalAsyncCall或任何从AsyncCall库中进行工作.

谢谢你的帮助.

delphi multithreading asynchronous delphi-2007

11
推荐指数
2
解决办法
2391
查看次数

检测Windows关闭或应用程序是否尝试从系统菜单关闭(WM_CLOSE)

我有托盘应用程序.

Onj FormCloseQuery我检查程序是否应该转到托盘而不是关闭它我把它放在托盘中(CanClose:= False)

但是,如果Windows由于Windows关闭而尝试关闭我的应用程序,我希望不将我的应用程序移动到托盘中,而是关闭它.

Win7终止我的应用程序,但XP没有关闭,因为我的应用程序仍然在托盘中.

如何检测Windows是否处于某种"关闭"模式?

谢谢!

delphi tray

11
推荐指数
2
解决办法
1万
查看次数

如何将目录与我的应用程序相关联

我不想关联扩展名但是文件夹.所以,当我点击桌面告诉操作系统使用我的应用程序,而不是资源管理器.

我试图用我的程序替换HKEY_CLASSES_ROOT\Folder\shell\open\command explorer.exe,但它不能正常工作因为我打开我的应用程序也控制面板和其他东西,这不是我想要的.

谢谢!

c++ delphi registry

4
推荐指数
1
解决办法
254
查看次数

找到托盘图标

我在托盘栏上找到托盘图标(在px中)时遇到问题.

我可以找到托盘而不是图标.这是我正在使用的代码:

unit uTrayIconPosition;

interface

uses
  Types;

function GetTrayIconPosition(const AWnd: THandle; const AButtonID: Integer; var APosition: TRect): Boolean;

implementation

uses
  Windows, CommCtrl, Classes, SysUtils;

function EnumWindowsFunc(AHandle: THandle; AList: TStringList): Boolean; stdcall;
var
  P: array [0..256] of Char;
  S: string;
begin
  if GetClassName(AHandle, P, SizeOf(P) - 1) <> 0 then
  begin
    S := P;
    if S = AList[0] then
    begin
      AList[0] := IntToStr(AHandle);
      Result := False;
    end
    else
      Result := True;
  end
  else
    Result := True;
end;

function FindClass(AName: string; AHandle: …
Run Code Online (Sandbox Code Playgroud)

delphi icons tray locate

1
推荐指数
1
解决办法
1197
查看次数