ShellExecuteの最後の引数について – プログラミング – Home

ShellExecuteの最後の引数に...
 
通知
すべてクリア

ShellExecuteの最後の引数について

固定ページ 1 / 2

江戸
 江戸
(@江戸)
ゲスト
結合: 23年前
投稿: 6
Topic starter  

お世話になっています。

エクセルをShellExecuteで起動させています。
この関数の最後の引数でアプリケーションの起動時における状態を指定すると
思うのですがヘルプにある表の引数すべてを指定しても
「裏方で起動させる」といった動作が出来ません。
そもそもそういうことは出来るのでしょうか?
それとも何か別な方法があるのでしょうか?

ShellExecuteに関するヘルプは全部読みました。
お願いします。

環境はVC++6.0/SP5/WINXP/オフィス2000です。


引用解決済
トピックタグ
dairygoods
 dairygoods
(@dairygoods)
ゲスト
結合: 23年前
投稿: 1421
 

「裏方で起動させる」というのがどういった起動方法なのかはっきりしませんが、
非表示で起動するならSW_HIDE、
最小化で起動するならSW_SHOWMINIMIZEで可能です。

ヘルプにある通り、これはlpFileにEXEのパスを指定したときだけ有効です。


返信引用
江戸
 江戸
(@江戸)
ゲスト
結合: 23年前
投稿: 6
Topic starter  

説明不足でした、すみません。
私もSW_HIDEがそれだと思い試してみたのですが表示された状態で起動します。
非表示で起動というのは画面上では見えないがプロセスでは動いているという
感じと考えてよろしいでしょうか?

一応下にコードを示します。
なぜでしょう?お願いします。

CString file_name;
file_name = C:\\Documents and Settings\\Administrator\\デスクトップ\\最新\\出力
帳票.xls ;
ShellExecute(NULL ,open, file_name, NULL, NULL, SW_HIDE);


返信引用
江戸
 江戸
(@江戸)
ゲスト
結合: 23年前
投稿: 6
Topic starter  

説明不足でした、すみません。
私もSW_HIDEがそれだと思い試してみたのですが表示された状態で起動します。
非表示で起動というのは画面上では見えないがプロセスでは動いているという
感じと考えてよろしいでしょうか?

一応下にコードを示します。
なぜでしょう?お願いします。

CString file_name;
file_name = C:\\Documents and Settings\\Administrator\\デスクトップ\\最新\\出力
帳票.xls ;
ShellExecute(NULL ,open, file_name, NULL, NULL, SW_HIDE);


返信引用
tib
 tib
(@tib)
ゲスト
結合: 23年前
投稿: 468
 

>これはlpFileにEXEのパスを指定したときだけ有効です。
に対して、

>file_name = (中略).xls ;
>ShellExecute(NULL ,open, file_name, NULL, NULL, SW_HIDE);

という風に「exeのパスを指定していないから」ではないでしょうか。


返信引用
edo
 edo
(@edo)
ゲスト
結合: 23年前
投稿: 1
 

file_name =
C:\\Documents and Settings\\Administrator\\デスクトップ\\最新\\出力帳票.xls ;

すみません、2段になってて見にくくなっているからでしょうか?
出力帳票.xlsまでのパスはフルパスで打ってあります。

違うところの指摘だったらすみません!


返信引用
PAI
 PAI
(@PAI)
ゲスト
結合: 23年前
投稿: 359
 

.xlsのパスじゃなくて、.exeのパスだよぅ。


返信引用
江戸
 江戸
(@江戸)
ゲスト
結合: 23年前
投稿: 6
Topic starter  

エクセルのエクゼですか?
それを起動してしまったら私の起動したい
出力帳票.xlsをHIDE状態で起動することは無理なのでしょうか?

お願いします!


返信引用
tib
 tib
(@tib)
ゲスト
結合: 23年前
投稿: 468
 

xlsファイルは第4引数で指定してください。


返信引用
dairygoods
 dairygoods
(@dairygoods)
ゲスト
結合: 23年前
投稿: 1421
 

ヘルプのlpParametersの説明に書いてあるとおり、
lpFileにEXEを指定した場合、lpParametersにアプリケーションに
渡すパラメータを指定します。

ヘルプを全部読んでも理解してなかったら意味ないです…。


返信引用
江戸
 江戸
(@江戸)
ゲスト
結合: 23年前
投稿: 6
Topic starter  

おおそうでしたか!
ヘルプが英語なので見落としてました!
と思ったんですが、試してみたところだめでした。
実行時にわけの分からないエラーが出てしまいます。

C:\Documents.xlsが見つかりません。
and.xlsが見つかりません。
(省略)\出力帳票.xlsが見つかりません。

最初の2つなんて読んでる覚えはないし
最後の1つはあるのに無いといわれます・・・

exe_name = C:\\Program Files\\Microsoft Office\\Office\\EXCEL.EXE;
file_name = C:\\Documents and Settings\\Administrator\\デスクトップ\\最新\\出力
帳票.xls ;
ShellExecute(NULL ,open, exe_name, file_name, NULL, SW_HIDE);

お願いします。


返信引用
tib
 tib
(@tib)
ゲスト
結合: 23年前
投稿: 468
 

xlsファイルのパスが空白を含む場合はそのパスを第5引数に設定してください。


返信引用
tib
 tib
(@tib)
ゲスト
結合: 23年前
投稿: 468
 

ちょっと書き方が不適切だったかな...?

第4引数:第3引数に指定したexeに渡すパラメータ。この場合はexcelに「xlsファイル
名」を与えてそのファイルをオープンさせる。

第5引数:第3引数に指定したexeを起動する際のデフォルトのディレクトリ(作業ディレク
トリ)。この場合は第4引数に指定した「xlsファイル」が存在する「ディレクトリ」を指
定する。


返信引用
MASATO
 MASATO
(@MASATO)
ゲスト
結合: 23年前
投稿: 53
 

file_name = \C:\\Documents and Settings\\Administrator\\デスクトップ\\最新\\出
力帳票.xls\" ;

としてみてはどうでしょう


返信引用
江戸
 江戸
(@江戸)
ゲスト
結合: 23年前
投稿: 6
Topic starter  

tibさん、MASATOさん!
有難うございます。

下のようにしてみたら出来ました!!!!!
1つ聞きたいんですが、今は消えた状態で起動してるんですけど
表示したり消えたりの変更って出来るんですか?
最小化したり、最大化したりをプログラミングで制御可能かどうかを聞きたいです。

CString file_name;
CString exe_name;
CString direct_name;
exe_name = C:\\Program Files\\Microsoft Office\\Office\\EXCEL.EXE;
file_name = 出力帳票.xls ;
direct_name = C:\\Documents and Settings\\Administrator\\デスクトップ\\最新\\;

ShellExecute(NULL ,open, exe_name, file_name, direct_name, SW_SHOWNORMAL);


返信引用
固定ページ 1 / 2

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました