Delphi Tips 
-----------------------------

キーワード:スタートメニュー

>> Index

02/08 DDeClientConv を使ってスタートメニューにアイコンを登録
02/08 スタートメニューを任意の位置にポップアップさせる

最終更新: 9180 日前

0105  D1   D2   D3   D4   D5   D6   D7   3.1   95   98    作成: 1999/02/08 osamu rev 1.1
   B1   B3   B4   B5   B6   B7   NT3   NT4   2K   XP  更新: 1999/02/08 osamu 編集
DDeClientConv を使ってスタートメニューにアイコンを登録

3.1 のプログラムマネージャのときと同じですね。
DDEClientConv をフォームに置いて以下のようにします。

var strGroup:String;
    strExeName:String;
    strPrgName:String;
    Temp:String;
begin
    strGroup   := 'グループ名';
    strPrgName := 'ソフト名';
    strExeName := Application.ExeName;

    if not DDEClientConv1.SetLink('PROGMAN','PROGMAN') then begin
        ShowMessage('ショートカットの制作に失敗しました。');
    end else try
        {グループの作成}
        Temp := '[CreateGroup(' + strGroup  + ')]';
        DDEClientConv1.ExecuteMacro(PChar(Temp),False);

        {グループの表示}
        Temp :=  '[ShowGroup(' + strGroup  + ',1)]';
        DDEClientConv1.ExecuteMacro(PChar(Temp),False);

        {アイテムの作成}
        Temp :=  '[AddItem("' + strExeName + '","' + strPrgName + '")]';
        DDEClientConv1.ExecuteMacro(PChar(Temp),False);

        ShowMessage('ショートカットを作成しました。');
    finally
        DDEClientConv1.CloseLink;
    end;
end;
参照: [Delphi-ML:21012] <その他Windows関連> <ShellApi> <Windows> <配布>

0112  D1   D2   D3   D4   D5   D6   D7   3.1   95   98    作成: 1999/02/08 osamu rev 1.1
   B1   B3   B4   B5   B6   B7   NT3   NT4   2K   XP  更新: 1999/02/08 osamu 編集
スタートメニューを任意の位置にポップアップさせる

スタートメニューのポップアップは、

procedure PopupStartMenu;
var hTaskBar: Integer;
begin
    hTaskBar:= FindWindow(PChar('Shell_TrayWnd'), nil);
    SetForegroundWindow(hTaskBar);
    PostMessage(hTaskBar, WM_USER + $0104, 0, 0);
end;

でOK。
表示されたメニューを MoveWindow で強制的に動かすには、

procedure MoveStartMenu(Point: TPoint);
var hStartMenu: Integer;
    OldRect: TRect;
begin
    hStartMenu:=FindWindow('#32768',nil);
    GetWindowRect(hStartMenu, OldRect);
    MoveWindow(hStartMenu,
        Point.X, Point.Y,
        OldRect.Right-OldRect.Left, OldRect.Bottom-OldRect.Top,
        True);
end;

詳しくはスレッドを追って下さい。
参照: [Delphi-ML:21886] <Windows>

[新規作成] [最新の情報に更新]

How To
Lounge
KeyWords

Tips
Delphi
Home
Osamu Takeuchi osamu@big.or.jp