スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Try&Error 付箋アプリを作ってみる stickies (1)

昨日の勢いのままで、デスクトップに表示する付箋的なものを作ることにします。

Delphiを忘れて久しいので、プログラムすることそのものリハビリも含めてゆっくりいきます。飽きればそれまで。

***目標***

Windows7の「付箋」よりもしっくり来るもの

***方針***

行き当たりばったりに行きます。付箋をつくるには、とかんがえると幾つかやらないと行けないことが思いつくんですが、できる限り忘れるようにして、試してみたくなった順に進めていきます。
***Windowsの起動時に立ち上げる***

やっぱり付箋なのでいつ見てもそこにないと役に立ちません。
一番安易に「スタートアップ」フォルダを使うつもりで進めます。

Delphiで作ったプログラムに毎回usesしていたバージョン情報用のフォームがあって、その中に参考になるコードがあるので、それをそのまま使うことにします。

ごそごそします。

what to use instead of application.handle for ShellExecute?:[2012/04/19]

もう、ほぼそのまま使えました。



画面の通り、ボタンをクリックすると、
・そのフォルダのパスをラベルに表示して、
・ついでにShellExecuteでフォルダをエクスプローラで開きます。

もう、Windowsバリバリです。クロスプラットフォームはクロスプラットフォーム、うちはうち、です。

uses
Windows, ShellApi;

// 特殊フォルダ
// http://delfusa.main.jp/delfusafloor/archive/VA009712_take/delphi/kabesys.htm#getshellfolder
function GetSpecialFolderPath(const CSIDL: Integer): String;
var
pidlPath: PItemIDList;
LPath: array[0..MAX_PATH] of Char;
begin
// Application.Handleは通らない
SHGetSpecialFolderLocation(HWND(nil), CSIDL, pidlPath);
SHGetPathFromIDList(pidlPath, LPath);
Result := LPath;
end;

// スタートアップフォルダ
function GetStartUpFolderPath(): String;
begin
Result := GetSpecialFolderPath(CSIDL_STARTUP);
end;

// 送るフォルダ
function GetSendToFolderPath(): String;
begin
Result := GetSpecialFolderPath(CSIDL_SENDTO);
end;

// デスクトップ
function GetDesktopFolderPath(): String;
begin
Result := GetSpecialFolderPath(CSIDL_DESKTOP);
end;

// ShellExecuteラッパー
procedure SimpleShellExecute(const Path: String; const Command: String = '');
begin
try
ShellExecute(HWND(nil), nil,
PChar(Path), PChar(Command),
PChar(ExtractFilePath(Path)), SW_SHOW);
except
;
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
Label1.Caption := GetStartUpFolderPath();
SimpleShellExecute(GetStartUpFolderPath());
end;


この流れでいくと、Delphiのソースコードをそのまま持ってきて、Lazarusで動くかどうかの実験場になるような気がしてきました。それもまた良し。

ところで、自分のソースコードのコメントとして、参考にしたURLを鬱陶しいほど差し込むタイプなんですが、今回の特殊フォルダを取得する関数のコメントにあったURL
http://hp.vector.co.jp/authors/VA009712/take/delphi/kabesys.htm#ishelllink
はすでにリンク切れでした。
と思ったら大丈夫でした。記憶をたどって「Delphi 壁の穴」で検索したらちゃんと接続できました。

Delphi壁の穴 - [2.システムを覗く]:[2012/04/20]

でも、2000年に閉鎖されてました。もう12年前。キュっとしました。

URLをよく見てみると、コンテンツ引き継ぎ系のようなので、末尾の方を削ってみました。

Delphi情報 - DelFusa Floor :[2012/04/20]

Lazarusで再びお世話になりそうな予感。

しかし、Lazarusのエディタって行頭をマウスで選択するときに、3回に1回はブレークポイントを設定してしまう。当たり判定厳しすぎ。なんとかならんのかな。
関連記事
スポンサーサイト
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。