喫茶XRAYトップページ

[▲前のスレッド]

[10141] netshコマンドの例返信 削除
2016/7/1 (金) 12:39:31 Mr.XRAY
[ Windows セキュリティの重要な警告 ] ダイアログ
http://mrxray.on.coocan.jp/Delphi/Others/MicrosoftSecurity.htm

に,netsh コマンドのサンプルコードを追加しました.
こういうのも検索エンジンで検索して調べることができると思いますが,
検索のノウハウがあるのではないかと...
具体的どうなのか,と訊かれても困っちゃいますが (^^;


[10142] ファイル名を指定して実行返信 削除
2016/7/2 (土) 15:38:59 Mr.XRAY
以下の記事も更新しました.

[ファイル名を指定して実行]
http://mrxray.on.coocan.jp/Delphi/Others/ExecuteFile.htm#top


[10145] Re:ファイル名を指定して実行返信 削除
2016/7/5 (火) 15:04:51 Mr.XRAY
> [ファイル名を指定して実行]
> http://mrxray.on.coocan.jp/Delphi/Others/ExecuteFile.htm#top


添付のプログラム修正しました.
記事の通りの動作をしていなかったのです.
既にダウンロードした方,ゴメンナサイ.


[10146] Re2:ファイル名を指定して実行返信 削除
2016/7/5 (火) 16:00:26 Mr.XRAY
> 添付のプログラム修正しました.

プログラムのソースコードです.
開発環境は Windows 7 U64(SP1) + Delphi XE(UP1) Pro です.

//=============================================================================
//  [ファイル名を指定して実行] ダイアログを表示するプログラム
//=============================================================================
unit plRunFileDlgUnit;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, ShellAPI, MultiMon;

type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    { Private 宣言 }
    FMonitorInfoEx : TMonitorInfoEx;
    FDialogTitle   : PChar;
    procedure WMApp(var Message: TMessage); message WM_APP+98;
    function GetMonitorHDC(AMousePos: TPoint): HDC;
  public
    { Public 宣言 }
  end;

  //---------------------------------------------------------------------------
  //  Delphiが関数類のヘッダ宣言を提供していない場合は,この様に利用者が定義して
  //  使用する
  //  この関数は非公開API関数
  //
  //  Shell32.dllを使用するにはusesにShellAPIが必要.
  //---------------------------------------------------------------------------
  SH_RunFileDlg = procedure (Handle    : THandle;
                             hIcon     : HICON;
                             lpazPaht  : PChar;
                             lpszTitle : PChar;
                             lpszPromp : PChar;
                             uFlages   : Integer); stdcall;

var
  Form1: TForm1;

implementation

{$R *.DFM}

const
  SHRD_DEFAULT      = $00; // 通常の画面
  SHRD_NOBROWSE     = $01; // 参照ボタンを非表示
  SHRD_NOMRU        = $02; // コンボボックスの履歴(MRU)を非表示
  SHRD_CALCDIRECTORY= $04; // [参照]で現在のフォルダの中身を表示
  SHRD_NOLABEL      = $08; // エディットボックスのラベルを非表示
  SHRD_OSEPARATEMEM = $20; // コンボボックスの横に表示されるラベル非表示

//=============================================================================
//  フォーム生成時の処理
//  実際にはフォームは表示しない
//  プロジェクトのソースコードに以下の変更をしている
//    Application.ShowMainForm := False;   デフォルトはTrue
//    Application.Run;                     実行しない(削除している)
//  プロジェクトのアイコンも変更している
//=============================================================================
procedure TForm1.FormCreate(Sender: TObject);
var
  LPrompt      : PChar;
  LuFlages     : Integer;
  LSHRunDialog : SH_RunFileDlg;
  LShHandle    : THandle;
begin
  FDialogTitle := 'ファイル名を指定して実行 - EXE 版 [Mr.XRAY]';
  LPrompt   := nil;
  LuFlages  := SHRD_NOMRU;
  LShHandle := LoadLibrary('shell32.dll');
  try
    PostMessage(Handle, WM_APP+98, 0, 0);
    LSHRunDialog := GetProcAddress(LShHandle, PChar(61));
    LSHRunDialog(Handle, 0, nil, FDialogTitle, LPrompt, LuFlages);
  finally
    FreeLibrary(LShHandle);
  end;
end;

//-----------------------------------------------------------------------------
//  マウスカーソル位置のモニタのデバイスとコンテキストの値を取得
//  モニタのデバイスコンテキスは以下の方法で取得できる
//      CreateDC('DISPLAY', nil, nil, nil);
//      GetDC(0)
//      GetWindowDC(GetDeskTopWindow);
//  使用する関数によって解放に使用する関数が異なる
//  本プログラムではMonitor単位のデバイスコンテキストを取得するCreateDCを使用
//-----------------------------------------------------------------------------
function TForm1.GetMonitorHDC(AMousePos: TPoint): HDC;
var
  LHandleMonitor : HMONITOR;
begin
  LHandleMonitor := MonitorFromPoint(Point(AMousePos.X, AMousePos.Y),
                                     MONITOR_DEFAULTTONEAREST);
  FMonitorInfoEx.cbSize := SizeOf(FMonitorInfoEx);
  GetMonitorInfo(LHandleMonitor, @FMonitorInfoEx);
  Result := CreateDC('DISPLAY', FMonitorInfoEx.szDevice, nil, nil);
end;

//-----------------------------------------------------------------------------
//  ダイアログの表示位置の制御
//  オリジナルの[ファイル名を指定して実行]ダイアログと同じにする
//-----------------------------------------------------------------------------
procedure TForm1.WMApp(var Message: TMessage);
var
  LMousePos  : TPoint;
  LScreenDC  : HDC;
  LLeft      : Integer;
  LBottom    : Integer;
  LhWindow   : HWND;
  LDlgHeight : Integer;
  LDlgRect   : TRect;
  LDlgPosX   : Integer;
  LDlgPosY   : Integer;
begin
  inherited;

  GetCursorPos(LMousePos);
  LScreenDC := GetMonitorHDC(LMousePos);
  try
    LLeft   := FMonitorInfoEx.rcWork.Left;
    LBottom := FMonitorInfoEx.rcWork.Bottom;
  finally
    DeleteDC(LScreenDC);
  end;


  LhWindow := FindWindow(nil, FDialogTitle);

  if LhWindow > 0 then begin
    GetWindowRect(LhWindow, LDlgRect);
    LDlgHeight := LDlgRect.Bottom - LDlgRect.Top;

    LDlgPosX := LLeft + 7;
    LDlgPosY := LBottom - LDlgHeight - 7;
    SetWindowPos(LhWindow,
                 0,
                 LDlgPosX,
                 LDlgPosY,
                 0,
                 0,
                 SWP_NOSIZE or SWP_NOZORDER);
  end;
end;

end.



[10150] Re3:ファイル名を指定して実行返信 削除
2016/7/6 (水) 11:08:14 Mr.XRAY
> > 添付のプログラム修正しました.

[ ファイル名を指定して実行 ] ダイアログを管理者権限で実行
http://mrxray.on.coocan.jp/Delphi/Others/ExecuteFile.htm#07

↑ アイコンを変更しました (ショートカットなし)
   32 ビット用と 64 ビットの両方を添付しました.


[ ファイル名を指定して実行 ] で実行可能なコマンド類
http://mrxray.on.coocan.jp/Delphi/Others/ExecuteFile.htm#01

↑ コマンドのリストがあるウエブページ関係のリンクです.
   別の項目にしました.
   Windows 10 の ms-settings: URI 一覧へのリンク追加しました.


[10173] Re4:ファイル名を指定して実行返信 削除
2016/7/8 (金) 17:57:22 Mr.XRAY
▼ Mr.XRAYさん

悪い癖が... またまた追加しました.

 [ ファイル名を指定して実行 ] で実行可能なコマンド類
 http://mrxray.on.coocan.jp/Delphi/Others/ExecuteFile.htm#01
 
↑ 実際の表示例の画像を掲載
   Windows 10 で実装された  ms-settings: URI スキームの例を追加


以下の項目を追加
プログラマには必要ないかも知れませんが,そうでない方向きの記事です.

[デスクトップにコマンドのショートカットを作成]
http://mrxray.on.coocan.jp/Delphi/Others/ExecuteFile.htm#08

[コントロールパネル関係のショートカットの作成]
http://mrxray.on.coocan.jp/Delphi/Others/ExecuteFile.htm#09


[10177] Re5:ファイル名を指定して実行返信 削除
2016/7/13 (水) 12:44:20 Mr.XRAY
追加しました.

[AppUserModelid 一覧と AppUserModelid によるアプリの起動]
http://mrxray.on.coocan.jp/Delphi/Others/ExecuteFile.htm#11


[10178] Re6:ファイル名を指定して実行返信 削除
2016/7/13 (水) 16:48:24 Mr.XRAY
> [AppUserModelid 一覧と AppUserModelid によるアプリの起動]

まっ,あれですね.
Windows 10 がどうのこうの,Microsoft Edge がとうのこうのと,
皆さん言って (書いて ?) いますが,そのうち当たり前のように
使うようになるですよ.多分...


[▼次のスレッド]
INCM/CMT
Cyclamen v3.82