プログラムを作成するとき、労力を節約したり他の目的でシステムのダイアログ ボックスを借用したくなることがあります。では、どのようにしてシステム ダイアログ ボックスを呼び出すことができるでしょうか。友人は、次のように VB で [プログラムから開く] ダイアログ ボックスを呼び出します。
winexec(PChar('rundll32shell32,OpenAs_RunDLL'+FilePath),SW_SHOWDEFAULT);
このコードは、rundll32.exe を実行し、shell32.dll 内のリソースを呼び出すことで実装されます。この方法は実行可能ですが、shell32.dll 内の貴重なリソースを呼び出す方法がわからない初心者もたくさんいます。
私がそれを呼んだ方法は次のとおりです。
1. システムの「バージョン情報」ダイアログボックスを呼び出します。
まず use に SHellApi を追加します。
次に、次のコードを書きます。
PROcedureTForm1.Button1Click(Sender:TObject);
変数
シェルアプリ:バリアント;
始める
ShellAboutW(0,'Timerv1.03','kedyCopyright',1);
終わり;
他の手順については詳しく説明しません。実行後、ボタンをクリックすると、標準の WINDOWS バージョン情報ダイアログ ボックスが表示されます。ダイアログ ボックスのタイトルは「Timerv1.03 について」です。ご覧のとおり、プログラムでは ShellAboutW 関数を使用しました。この関数は MSDN2003 で次のように説明されています。
シェル関数について
「ShellAbout」ダイアログボックスを表示します。
構文
intShellAbout(HWNDhWnd,
LPCTSTRszApp、
LPCTSTRszその他のもの、
HICONhアイコン
);
パラメータ
wx
[in]親ウィンドウのウィンドウハンドル。このパラメータは NULL にすることもできます。
szApp
[in] に表示されるテキストを含むヌル終了文字列へのポインタ
シェルのタイトルバー「About」ダイアログボックスとダイアログボックスの最初の行のその後
テキスト「Microsoft」。テキストに 2 つの部分に分割するセパレータ (#) が含まれている場合、
関数は最初の部分をタイトルバーに表示し、2 番目の部分を最初の行に表示します
テキストの後に「マイクロソフト」。
szその他のもの
[in] に表示されるテキストを含む null で終了する文字列へのポインタ
バージョンと著作権情報の後のダイアログボックス。
hアイコン
[in]関数がダイアログ ボックスに表示されるアイコン。このパラメータが NULL の場合、
Microsoft® Windows® または Microsoft Windows NT® アイコンを表示する機能です。
それが何を意味するのかを私が翻訳する必要はないと思います。これらのことは自分で確認するのが最善です。
2. シャットダウンダイアログボックスを呼び出します。
コードの先頭部分を次のように変更するだけです。
始める
shellapp:=CreateOleObject('Shell.application');
シェルアプリ。Windows をシャットダウンします。
終わり;
他の部分は変更されません。実行してボタンをクリックすると、標準のシステム シャットダウン ダイアログ ボックスが表示されます。
実際、これは依然として WindowsAPI 関数 shutdownwindows と呼ばれるものです。
この部分では、Windows シェルアプリケーションのメソッドの 2 つの関数を使用します。メソッドのその他の機能は次のとおりです。
BrowseForFolder、CascadeWindows、ControlPanelItem、EjectPC、Explore、FileRun、FindComputer、FindFiles、Help、MinimizeAll、NameSpace、Open、RefreshMenu、SetTime、TileHeadingly、TileVertally、TrayProperties、UndoMinimizeALL。私はこれらの関数のうちのいくつかしか使い方を学びませんでした。詳細はMSDNのshellobjectに関する内容をご確認ください。
私が最も言いたいのは、Windows でプログラムを学習するには MSDN を使用する必要があるということです。この図書館のリソースには本当に驚かされます。ぜひご覧ください。あなたもそう思うと思います。