VCL组件设计为仅从应用程序的主线程使用.对于视觉组件,这从未给我带来任何困难.但是,我有时希望能够使用例如TTimer来自后台线程的非可视组件.或者确实只是创建一个隐藏的窗口.由于依赖,这是不安全的AllocateHwnd.现在,AllocateHwnd我理解的不是线程安全是设计的.
是否有一个简单的解决方案,允许我AllocateHwnd从后台线程使用?
这个问题引用了这个问题以及在stackoverflow上发布的已接受的答案.
我对Windows API编程感到不舒服.
探索方式EasyGPS通过Topografix处理剪贴板操作,我发现它使用了自定义的剪贴板格式命名GPX至极实际上是纯XML文本(GPX要准确).使用Clipboard.AsText被排除在外.
我在这个阶段偶然发现:
program ProbeClipboard;
{$APPTYPE CONSOLE}
uses
SysUtils,
Windows,
ClipBrd;
var
CF_GPX: Cardinal;
ClipboardData: THandle;
begin
CF_GPX:=RegisterClipboardFormat('GPX');
if ClipBoard.HasFormat(CF_GPX) then
begin
Writeln('GPX format available in clipboard');
//
OpenClipboard(0);
ClipboardData := GetClipboardData(CF_GPX);
if ClipboardData = 0 then
raise Exception.Create('Clipboard data Error');
/// How to use GlobalLock and GlobalUnLock
/// so that I can paste the Clipboard data
/// to a TMemo instance …Run Code Online (Sandbox Code Playgroud)