
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で質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Vba 互換モードでのAppActiveについて教えてください 2 2022/06/27 18:47
- Windows Vista・XP WindowsXPを最近のパソコンにインストール出来ますか? 今使用している10で動いているパソコン 14 2023/05/06 08:23
- Visual Basic(VBA) Vba UserFormを前面に出す方法を教えてください 1 2023/08/17 11:08
- アプリ PCでAndroidアプリを実行 BlueStacks AppPlayerが良い? 2 2022/05/10 10:36
- ビデオカード・サウンドカード PCの音が出ない 2 2023/02/11 12:32
- ネットワーク 「ファイル名を指定して実行」が遅い 4 2023/04/04 21:50
- Excel(エクセル) inputboxのウインドウを画面の最上部に表示したい 1 2022/11/28 15:43
- Visual Basic(VBA) VBS Bookを閉じるコード 1 2023/02/16 17:31
- Excel(エクセル) vba sendKeysを送る相手のソフトを前面に開くには 1 2023/07/20 16:42
- アプリ 勝手にドライバーを入れてくれるアプリを教えてください。 2 2022/11/29 18:40
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
MFCと.NETFramework
-
文字のチェック
-
WindowsXpでAppActivate
-
「読み込み違反」が起きたとき...
-
VBがデバッグ時落ちてしまう
-
C言語に詳しい人に質問です。
-
excel vbaから実行するexe実行...
-
一通ずつ処理したい(アウトル...
-
他プログラムの関数実行(C#,VC+...
-
VBでVBAを起動
-
ビルドしたEXEを実行するとウィ...
-
androidで.exeを実行できますか?
-
CUBASE AIのセットアップについ...
-
FlashPlayer Plug-in の制御方...
-
vb2005の新刊書籍のロードマッ...
-
スキャナーを使用するアプリケ...
-
VB5で起動回数の制限をかけたい。
-
DirectX利用プログラムにおける...
-
visual studio 2013 エラー
-
eclipse-php-galileo-SR2-win32...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Visual Studio 「AnyCpu」について
-
excel vbaから実行するexe実行...
-
Windows PowerShellでC言語を実...
-
「読み込み違反」が起きたとき...
-
C++初心者です。 debug asserti...
-
VB6.0 exe作成時に実行時エラー...
-
mscorlib.dllの初回例外について
-
外部exe呼び出しの方法 ShellEx...
-
VisualStudioでC#が実行できない
-
CreateFile が ERROR_PATH_NOT_...
-
androidで.exeを実行できますか?
-
実行ファイル(.exe)が別のPC...
-
ActiveX → VB を起動するとCre...
-
C#VB、exeに埋め込んだexeの実行
-
ActiveDirectoryから値を取得
-
Format 関数のバグ?
-
Windows64BitOSでVB5.0のPG起動
-
JP1から起動したexeでhttpリク...
-
JP1/File Transmission Server/...
-
matlabで作成したdllをVBAで使...
おすすめ情報