• ベストアンサー

Visual Basic 6.0のShell関数

Visual Basic 6.0のShell関数 Shell関数についてですが、Shellでexeの呼び出しまでは出来たのですが、これから先の操作(Command1をクリックなど)の指定は出来るのでしょうか? VB6の初心者でして分からない点が多く、質問も分かりづらいかもしれませんが、回答をよろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • nda23
  • ベストアンサー率54% (777/1415)
回答No.2

Shellは初期動作(exeのmainに制御が渡る寸前まで)が終わると、 制御を返します。それだけです。 >これから先の制御 そのexeが他のプロセスからの制御を受け入れられるように 設計されているのでしょうか? そうであれば、DDE通信とか、COMモデルとしての接続手順がある はずなので、それを使って制御します。 そうなっていないなら、辞めるべきです。EnumChildWindowや SendMessageを使って、起動したexeのウィンドウを操作する ことはできますが、Windowsの基本アーキテクチャを理解する 前に、形だけ真似して、成功するかも知れませんが、重大な 障害を招く危険があります。

regulus0725
質問者

お礼

回答ありがとうございます。 まだまだ分からない点が多いので、重大な危険を冒さないよう違った方法を探してみます。

その他の回答 (1)

回答No.1

>Shell関数についてですが、Shellでexeの呼び出しまでは出来たのですが、これから先の操作 >(Command1をクリックなど)の指定は出来るのでしょうか? Shell関数 では、できません。 そのEXE がどのような物かにもよりますが、どうしてもなら、Win32 API 関数等を酷使して 力技で実現するしかないかと思いますが、初心者とおっしゃるなら、もう少し基本的な事を 勉強してから挑戦されたらいかがでしょうか? Command1をクリックなど とされていますが、他にも操作したい事があるならなおさらです。 下記リンク等も参考にして下さい。 http://okwave.jp/qa/q6069911.html それより、別、EXEにせずに、別Fomr 等で操作するように仕様を見直された方が無難です。

regulus0725
質問者

お礼

回答ありがとうございます。 しっかりと基礎を身に付けてから、また組んでみようと思います。

関連するQ&A

  • エクセルVBAで使うShell関数について

    現在、初心者ながらもエクセルを使って動画や音楽を検索して再生するソフトを作っています。 指定したファイルを、指定したアプリケーションで起動して開きたいと思い、ネットを使って調べたら2つの異なるShellの書き方で動かす方法が見つかりました。 2つのShell関数は同じものなのか教えて下さい。 (1) ret = Shell(Winamp_Path & "winamp.exe /ADD " & """" & Path) と、言う Shell(アプリケーションのフルパス/ADD""ファイルのフルパス) と書いてファイルをアプリケーションで開く方法。 (2) Call Shell(Path & oFile, vbNormalFocus) と、言う Shell(アプリケーションのフルパス, 起動時のウィンドウの状態) と書いてアプリケーションを起動する方法。 この2つは同じ種類のShell関数なのでしょうか。 (1)は、ファイルも一種のアプリケーションとして扱われているんでしょうか。 (2)がShell関数の基本型のようですが、(1)のような書き方が見つかってからは、他にも違う書き方があるかと思うと気になって仕方無いです。 使い方の違いは分かったのですが、調べても(2)の使い方や、別の関数や言語、APIを使ったアプリケーションの書き方しか見つからず、 エクセル2007VBのヘルプを見ても(2)の使い方しか見つからず、 Googleで、「エクセル Shell関数」と調べても、2つの違いが書かれている所が見つからなかったので質問しました。 ※この2つと違う、アプリケーションを起動するShellの記述があるなら、詳しくではなく、参考程度に教えて頂けると、とても嬉しいです。 頭の悪い質問だと思いますが、是非ともアドバイス、宜しくお願いします。

  • Shell関数はOSに依存?

    現在VB4からVB6へのコンバージョン作業を行っています。 その際、 VB4→Windows98 VB6→Windows2000XP と、異なるOSを使用しています。 VB6の環境では、Shell関数を使用してMS-DOS バッチ ファイルの起動を行えるのですが、VB4の環境では同じコーディングでもバッチファイルが起動しない&エラーが出力されませんでした。 現在はVB4の環境をWindows95へ移す事で問題を回避したのですが (VB4の環境は比較テストに使用するだけでしたので) 98だから使えないと言うのも気持ちが悪く、質問させていただきました。 どなたかShell関数の上記点への対応策等ご存知でしたらご教授願います。

  • Access Shell関数について質問です。

    Access Shell関数について質問です。 AccessVBA でボタンをクリック時に画像を表示させたいと考えています。 クリック時にデフォルトの画像ソフトを起動させて表示しようと思っています。 たしか、Shell関数を使用すれば使えたと思うのですが、 パラメーターの入れ方を忘れてしまいました。 指定アプリケーションは使用環境によって違う為、出来ればデフォルトで 各環境のデフォルト設定の写真ビューワーを呼び出したいと考えています。 私の記憶が間違っているかもしれないので、Shell関数以外も含めて、 どなたかご存知の方アドバイスよろしくお願いいたします。

  • VB6のShell制御について

    VB6のShell制御について 以前http://okwave.jp/qa/q6069911.htmlで 質問させていただき、解決することができました。 取引先などのダイアログexeを何本か開発し、連結テストをした際に PM経由でテスター(エンドユーザー)から「ダイアログ起動中は、起動基のexeを 触らせないようにできないか」と 指摘があり、修正をしています。 Shellのパラメータ等を弄ったり、書籍やネットを調べてみましたが 指摘を満たすようなサンプルが見つかりませんでした。 納期も近く、どのようにすれば指摘点を満たせるか教えていただけないでしょうか? 開発環境 Windows XP PRO SP4 Visual Basic6.0(SP6)

  • Shell関数の終了を調べる方法

    Shell()関数を使ってほかのアプリケーションを起動し、終了を待つというよくある件なのですが、 ちょっと古くて、VB4.0の16ビット版による開発で、 動作環境はWindosXP(32ビット)です。 下記のように記述していますが、Shellの戻り値が&HFFFFを超えるためか、うまくいかないときがあります。 Private Declare Function GetModuleUsage Lib "Kernel" _ (ByVal hModule As Integer) As Integer Private Sub Command1_Click() Dim hInst As Integer hInst = Shell("calc.exe", vbNormalFocus) While GetModuleUsage(hInst) <> 0 DoEvents Wend MsgBox " 終了しました ", vbInformation End Sub ただしWindows98でも動作する必要があるので、32ビットにしてしまうというのはなしです。 どのようにしたらうまくいくのでしょうか? アドバイスください。お願いします。

  • Shell関数で起動したメディアプレーヤーを終了したい。

    以前このコーナーで質問して教えて頂いたShell関数でメディアプレーヤーを起動できました。(以下にそのコーディングを記載しました) 今度は起動したメディアプレーヤーをVBから終了する方法が知りたいのですが教えて頂けませんか。 Shell ("C:\Program Files\Windows Media Player\wmplayer.exe /1 G:\TEST.wma ,vbMinimizedFocus") 宜しくお願いします。

  • Shell関数?

    いつもお世話になってます。 XPでMicrosoft Visual Basic 2008 Express Editionを使ってます。 A.exeとB.exeを作りました。 Aを実行→OKボタンを押す→Bが実行される というのを作ったんですが、 <Aのプログラム> Private Sub Button1_Click(ByVal sender As System.Object,   ByVal e As System.EventArgs) Handles Button1.Click  Shell("C:\B.exe", AppWinStyle.NormalFocus)  Me.Close() End Sub を実行するとBが二度(?)実行されて(途中で止まってるような・・・) 「別のプロセスで使用されているため、プロセスはファイル"C:\B.exe"にアクセルできません。」 となります。 ちなみにB.exeはPC起動時は常に表示されるようにつくりました。 説明が足りないかもしれませんが解決しなくて困ってます。 どうしたら解決するか教えてください。

  • VBA Shell関数 

    エクセルVBA shell関数でプログラムを立ち上げ (DOSプロンプト画面が起動) そのあとに、続けてDOSプロンプトにコマンドと"Sheet1のA1"のセルに入力してある文字を打ち込みたいのですが上手くいかなく困っています。 どのようにしたらよいのでしょうか。 以下のように記述しています。 (初心者です) ------------------------------------ Sub ShellSamp1() Dim myID As Double   myID = Shell("C:\****\*****\*****.EXE & " & cd C:\Documents and Settings & " & Range("A1").Value & """") End Sub ------------------------------------

  • Visual Studioについて。

    こんにちは。 最近、妙にプログラミングに興味を持ち始め、VisualBasic(.NET?)でのプログラミングから勉強してゆきたいと思います。 しかし、まったくの初心者であります。 そこでなのですが、Visual Basic(.NET?)でのプログラミングは、Visual Studioで行えるのでしょうか? さらに、Visual Basicと、Visual Basic.NET があるようなのですが、どう違うのですか? VBも、VB.NETもどちらも、Visual Studio1つで できますか? そして、Visual Studioには、コンパイラは付属していますか? (よく、プログラミングしたあとに、コンパイルしてEXEファイルを作らないといけないと聞くので。) 検索エンジンで検索しても、方法が悪かったのか、よくわからなかったので、よろしくおねがいします。

  • VBA Shell について(アプリの起動)

    Shellを使用して特定のアプリケーションの起動および操作をしたいと考えています。 起動は以下の式で出来たのですが、 Sub VbaToCmd() Call Shell("C:...........................................................................exe", vbNormalFocus) End Sub 起動後の画面でパスワード入力が求められます。 (1)パスワードを自動入力にしたい。 (2)起動後、キーボード操作を行いたい。 VBA初心者ですみません。。 ご回答よろしくお願いします。

専門家に質問してみよう