
No.4ベストアンサー
- 回答日時:
種々試してみました。
結論:
mspaint = Shell("mspaint.exe " & "d:\sample.bmp", 1)
この間、1秒以上空ける
AppActivate mspaint
でした。
IDもタイトル行の文字列も試してみました。
が、いずれも実行OKでした。
1)
AppActivate を独立したボタンに定義しshell文が実行されてから数秒経過してボタンをクリックする。
2)
一度だけ起動のTimerイベントを使い、そのTimer内部で
Disabledにし、AppActivateを実行。
ちなみに
タイトル文字列を利用する場合
AppActivate "sample.bmp - ペイント"
でOKです。
IDを使う場合(mspaint)、Formのgeneralでdim定義もしくはglobalで定義すること。
理由は専門家に任せるとして。
参考になれば。
できました!!
mspaintを実行してから、waitが必要なのですね。
デバッグ時に"1644"のようなIDが取得できたので、waitは考えませんでした。
その後にAPI32実装したsendkeyを実行するのですが、こちらはwaitかけてたのですが。。
SUPERS様、どうもありがとう御座いました。
No.5
- 回答日時:
>WinXPではAppActivateが呼べないのでしょうか
WinXPでもAppActivateは使えるはずです。
#4のSUPERGさんを拝借して
mspaint = Shell("mspaint.exe " & "d:\sample.bmp", 1)
StopTime (100) 'アクティブになるまで待つ
AppActivate mspaint
としてみては
O_cyan様、有難うございます。
#4様にアドバイスいただき、解決いたしました。
Stoptime(100)はVBの有名サイトサンプルですね。
http://www.bcap.co.jp/hanafusa/VBHLP/keybdeve.htm
また、宜しくお願いします。
No.3
- 回答日時:
>実行時エラー5が出てしまいます
実行時エラー5はプロシジャーや引数の不正ですよね。
実行中のプログラムを識別するタスクIDをAppActivate
ステートメントで使用するですよね。
Dim Ret As Long
Ret = Shell("C:\Program Files\Accessories\mspaint.exe" & "d:\sample.bmp", 1)
AppActivate Ret
か
Dim Ret As Long
Dim MyFile As String
MyFile = Chr$(34) & "D:\sample.bmp" & Chr$(34)
Ret = Shell("C:\Program Files\Accessories\mspaint.exe" & MyFile, 1)
ではどうでしょうか。
この回答への補足
お返事有難うございます。
アドバイスに習ってプロシージャの引数を疑ってみたのですが、結果変わらずでした。
WinXPではAppActivateが呼べないのでしょうか、疑問です。。
#2さんの示されたAPI32でコードを組もうとしているのですが、いまいち使い方わからず
実装できてませんといったところです・・
ご助言いただけることがありましたら、又よろしくお願いします。
No.2
- 回答日時:
AppActivateの引数は、Shell()が返すタスクIDではなくタイトルバーの文字列ですよ。
例えば電卓なら「電卓」ですね。
ペイントの場合開くアプリケーションによってタイトルバーが変わるので、この場合はShell()やAppActivateを使わずに、OpenProcess(),SetForgroundWindow()やGetWindowThreadProcessId()などのAPIを使ったほうが確実です。
おっしゃる通り、標準は文字列を渡すようですが、MSDNヘルプで、Shellが返すIDを引数にすることもできるみたいです。
piyo様の示されたAPIを調べようと思います。ありがとうございました。
No.1
- 回答日時:
mspaint = Shell("mspaint.exe " & "d:\sample.bmp", vbNormalFocus)
これでは駄目でしょうか?
AppActivate mspaintのコードは不要ではないかと思います(絶対とは云えません)
この回答への補足
回答有難うございます。
>mspaint = Shell("mspaint.exe " & "d:\sample.bmp", 1)
やってみましたが、だめでした。。Shellの引数"1"はvbNormalFocusを示すです。。
ちなみに、mspaintにフォーカスをあてるのはこの後sendkeysを実行します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Visual Studio 「AnyCpu」について
-
excel vbaから実行するexe実行...
-
ActiveDirectoryから値を取得
-
「読み込み違反」が起きたとき...
-
JP1/File Transmission Server/...
-
visual c++ 2008 にてhello wo...
-
C#VB、exeに埋め込んだexeの実行
-
Windows PowerShellでC言語を実...
-
VB2005 Vistaで印刷ができません
-
mscorlib.dllの初回例外について
-
VC++のCOMのデバッグ方法について
-
意味不明の実行時エラーで困っ...
-
Designer.vbは直接コードをいじ...
-
C# 他のアプリケーションを優先...
-
VB6(SP5)+OO4OでCreateObjectが...
-
VBAで印刷の成功判定
-
PHPでPDFファイルの直接印刷
-
印刷ダイアログを表示させない方法
-
オートメーションエラー(214741...
-
アウトルックが起動しているか...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
excel vbaから実行するexe実行...
-
Visual Studio 「AnyCpu」について
-
「読み込み違反」が起きたとき...
-
Windows PowerShellでC言語を実...
-
Format 関数のバグ?
-
C++初心者です。 debug asserti...
-
VB6.0 exe作成時に実行時エラー...
-
結果が見れない~
-
mscorlib.dllの初回例外について
-
C#VB、exeに埋め込んだexeの実行
-
一通ずつ処理したい(アウトル...
-
外部exe呼び出しの方法 ShellEx...
-
VB6 EXEとプログラムの違い
-
C言語に詳しい人に質問です。
-
ActiveDirectoryから値を取得
-
ActiveX → VB を起動するとCre...
-
JP1/File Transmission Server/...
-
ACCESSランタイムでエラー
-
MFCと.NETFramework
-
androidで.exeを実行できますか?
おすすめ情報