掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
Lazarusで別プロセスからのドラッグ&ドロップ (ID:148943)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
当方、Lazarus2.0.8+windows10(64bit)の環境です。 タイトル通りLazarusで別プロセスからのドラッグ&ドロップを受け取りたいのですがうまくいきません。 問題の切り分けのために最小構成のコードで実験しましたが動きません。 まずその最小構成のコードを示します(40行程度です) unit Unit1; {$mode objfpc}{$H+} interface uses Classes, SysUtils, Forms, Controls, Graphics, Dialogs,Shellapi, windows; type { TForm1 } TForm1 = class(TForm) procedure FormCreate(Sender: TObject); private protected procedure WMDropFiles(var Msg: TWMDropFiles); message WM_DROPFILES; public end; var Form1: TForm1; implementation {$R *.lfm} { TForm1 } procedure TForm1.FormCreate(Sender: TObject); begin DragAcceptFiles(Handle, True); end; procedure TForm1.WMDropFiles(var Msg: TWMDropFiles); begin showmessage('D&D'); end; end. 上記のコードでビルドすると、ドラッグしていったときに、カーソルの形がドロップ可能に変わるので、"DragAcceptFiles(Handle, True);"は、正常に機能していると思われます。 しかし、この状態からドロップしても何も起きません。 ドロップが正常に処理されていれば”D&D”のメッセージが出るはずなのですが。 推測ですが、”procedure TForm1.WMDropFiles(var Msg: TWMDropFiles);”が実行されていないのではないかと思います。 WM_DROPFILESメッセージが飛んできてないとは考えにくいので、メッセージの振り分けが適切にされていないのではないかと思います。 この現象についてなにか(できれば解決法)情報をお持ちの方がいましたらご教示ください。 //15年ほど間にdelphi6+win2kの環境で同様のコードを書いたときは問題ありませんでした。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.