お世話になっております。
現在、簡単なアプリケーションランチャーを作成しようとしています。
環境はVisual Studio 2012 expressで、普段はC言語+DXライブラリで
ソフトの開発を行っています。
今回、作成したフォームアプリケーション(ランチャー)から
指定したプログラムを起動させることが出来ず
困っているため質問致します。
画面には4つのボタン(インストール、起動、アンインストール、終了)があり、
終了ボタン以外は指定したプログラムを起動するだけのものです。
ただし、インストール状況、インストール先をレジストリで管理し、
インストール前の状態では、起動、アンインストールボタンを非活性に、
インストール後の状態ではインストールボタンが非活性に、
またインストール後は起動ボタンを押すとレジストリに登録された位置の
プログラムを起動する仕様です。
(レジストリへの登録はインストーラ側で行うので、ここでは無視してください。)
このような仕様のもと、まずはVisualStudio内でボタンを配置して、
クリック時にShellExecute()が実行されれば、まずはインストールボタンの処理は
完成かと思ったのですが、フォームアプリケーション内でShellExecuteを記述すると、
ビルド時にエラーになってしまいます。
どうすれば解決する問題なのでしょうか。
フォームからアプリが起動できない(VS2012Express)
Re: フォームからアプリが起動できない(VS2012Express)
エラーの内容を書いてください。
Re: フォームからアプリが起動できない(VS2012Express)
「普段は」C言語+DXライブラリを使っているとのことですが、わざわざ「普段は」と書くということは、
今使っている言語は違うという印象を受けます。どの言語を使っているのでしょうか?
また、エラーが出た際は、エラーメッセージを貼っていただくと答えやすくなります。
System.Diagnostics.Process.Start("起動したいファイル名")でできるかもしれません。
http://dobon.net/vb/dotnet/process/openfile.html
また、system("起動したいファイル名")でもできるかもしれません。
http://okwave.jp/qa/q5304864.html
WinExec関数やCreateProcess関数もあります。
どの程度の演出や装飾をしたいかわかりませんが、説明だけを見ると単純な仕様に見えるので、
素直にDev-C++を用い、C言語でコードを書いてアプリケーションを作成する、ということも一つの解決法です。
今使っている言語は違うという印象を受けます。どの言語を使っているのでしょうか?
また、エラーが出た際は、エラーメッセージを貼っていただくと答えやすくなります。
「フォームアプリケーション」がどういうものか良くわかりませんが、ren さんが書きました:どうすれば解決する問題なのでしょうか。
System.Diagnostics.Process.Start("起動したいファイル名")でできるかもしれません。
http://dobon.net/vb/dotnet/process/openfile.html
また、system("起動したいファイル名")でもできるかもしれません。
http://okwave.jp/qa/q5304864.html
WinExec関数やCreateProcess関数もあります。
どの程度の演出や装飾をしたいかわかりませんが、説明だけを見ると単純な仕様に見えるので、
素直にDev-C++を用い、C言語でコードを書いてアプリケーションを作成する、ということも一つの解決法です。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
-
ren
Re: フォームからアプリが起動できない(VS2012Express)
ご返信ありがとうございます。
今回作成している画面は、
VisualStudioから ファイル→新しいプロジェクト→Visual C++→CLR→カラのCRLプロジェクト で作成したものです。
ボタン設置箇所は以下のように書いています(最初にwindows.hをインクルードしています。
しかし、これをビルドすると、以下のエラーが発生します。
エラー 1 error LNK2028: 未解決のトークン (0A000041) "extern "C" struct HINSTANCE__ * __stdcall ShellExecuteW(struct HWND__ *,wchar_t const *,wchar_t const *,wchar_t const *,wchar_t const *,int)" (?ShellExecuteW@@$$J224YGPAUHINSTANCE__@@PAUHWND__@@PB_W111H@Z) が関数 "private: void __clrcall mainlauncher::MainForm::button1_Click(class System::Object ^,class System::EventArgs ^)" (?button1_Click@MainForm@mainlauncher@@$$FA$AAMXP$AAVObject@System@@P$AAVEventArgs@4@@Z) で参照されました。 C:\Users\xxxxx\project\launcher\main-launcher\MainForm.obj main-launcher
エラー 2 error LNK2019: 未解決の外部シンボル "extern "C" struct HINSTANCE__ * __stdcall ShellExecuteW(struct HWND__ *,wchar_t const *,wchar_t const *,wchar_t const *,wchar_t const *,int)" (?ShellExecuteW@@$$J224YGPAUHINSTANCE__@@PAUHWND__@@PB_W111H@Z) が関数 "private: void __clrcall mainlauncher::MainForm::button1_Click(class System::Object ^,class System::EventArgs ^)" (?button1_Click@MainForm@mainlauncher@@$$FA$AAMXP$AAVObject@System@@P$AAVEventArgs@4@@Z) で参照されました。 C:\Users\xxxxx\project\launcher\main-launcher\MainForm.obj main-launcher
エラー 3 error LNK1120: 2 件の未解決の外部参照 C:\Users\xxxxx\project\launcher\main-launcher\Debug\main-launcher.exe 1 1 main-launcher
ご紹介いただいた他の方法は今から試してみます。ありがとうございます。
今回作成している画面は、
VisualStudioから ファイル→新しいプロジェクト→Visual C++→CLR→カラのCRLプロジェクト で作成したものです。
ボタン設置箇所は以下のように書いています(最初にwindows.hをインクルードしています。
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
ShellExecute(NULL, L"open", L"notepad.exe",NULL,NULL,SW_SHOWNORMAL);
}
エラー 1 error LNK2028: 未解決のトークン (0A000041) "extern "C" struct HINSTANCE__ * __stdcall ShellExecuteW(struct HWND__ *,wchar_t const *,wchar_t const *,wchar_t const *,wchar_t const *,int)" (?ShellExecuteW@@$$J224YGPAUHINSTANCE__@@PAUHWND__@@PB_W111H@Z) が関数 "private: void __clrcall mainlauncher::MainForm::button1_Click(class System::Object ^,class System::EventArgs ^)" (?button1_Click@MainForm@mainlauncher@@$$FA$AAMXP$AAVObject@System@@P$AAVEventArgs@4@@Z) で参照されました。 C:\Users\xxxxx\project\launcher\main-launcher\MainForm.obj main-launcher
エラー 2 error LNK2019: 未解決の外部シンボル "extern "C" struct HINSTANCE__ * __stdcall ShellExecuteW(struct HWND__ *,wchar_t const *,wchar_t const *,wchar_t const *,wchar_t const *,int)" (?ShellExecuteW@@$$J224YGPAUHINSTANCE__@@PAUHWND__@@PB_W111H@Z) が関数 "private: void __clrcall mainlauncher::MainForm::button1_Click(class System::Object ^,class System::EventArgs ^)" (?button1_Click@MainForm@mainlauncher@@$$FA$AAMXP$AAVObject@System@@P$AAVEventArgs@4@@Z) で参照されました。 C:\Users\xxxxx\project\launcher\main-launcher\MainForm.obj main-launcher
エラー 3 error LNK1120: 2 件の未解決の外部参照 C:\Users\xxxxx\project\launcher\main-launcher\Debug\main-launcher.exe 1 1 main-launcher
ご紹介いただいた他の方法は今から試してみます。ありがとうございます。