DOSコマンドベースのEXEを作るには初期のEXEの選択で何を選べばよいのでしょうか?

あとActiveXとはどういうものなのでしょうか?

宜しく、教えてください

このQ&Aに関連する最新のQ&A

A 回答 (2件)

DOSコマンドベース?VBでできるのかな?


hogehoge.batを作成して、
Shell hogehoge.bat
じゃ反則?

それと、ActiveXですか・・・
何?と言われても何なんだろうね(笑)
ぼくの場合は、自分のよく使う関数をActiveX化してます。

※1.ActiveXDLL化しているもの
他のアプリケーションの下にならないメッセージボックスや、サイズ指定の出来るファイル・フォルダ選択ダイアログなど、フォームとは無関係によく使う関数

※2.ActiveXユーザコントロール化しているもの
フォームまたはフォームの中のコントロールのイベントを読み取ってアクションを起こすもの。もしくは、アクションを起こさすもの。または、ユーザコントロール身が実体化し、それ自身が動きを成すもの。

※3.ActiveXEXE化しているもの
パスワードを求めたり、オープニングのタイトルウィンドウなど、基本的にユーザが見える形のフォームなどが存在するもの。

これはあくまでぼくの場合ですが・・・あまり参考にならないかも?

それにDLLでもフォームを持つことが出来るし、内部処理だけで実際には画面に表示しないEXEだってできるし・・・正しい使い方ってあるのかな?

かえってややこしくなったかな?

たぶんプロジェクトの追加で、EXE・DLL・ユーザコントロールっていうのがあったから質問したと思うんだけど、そんなにそれぞれの差って無いと思うよ(たぶん)
でも共通して言えるのは、使う用途が多いものを関数化・実体化させたものだと思う(これもたぶんだけど・・・)

でわでわ(あくまで田吾作論です('_`)ウゥ)
    • good
    • 0
この回答へのお礼

VBってなかなか難しいですね。
コメントいただきありがとうございます。

お礼日時:2001/07/19 09:32

DOS窓で起動する、フォーム無しのプログラムでしょうか?



私の場合、はじめに標準EXEを選んでおいて、新規のForm1を開放して、メニューの[プロジェクト]→[標準モジュールの追加]で作ります。
次にModule1のコードの窓に「Private Sub Main()」を作って、そこにロジックを書きます。

Activeは、他の方にお任せしますね。(^^;
では
    • good
    • 0
この回答へのお礼

標準exeを選べばいいのですね。VBを使いこなすには、いろいろ隠れているので大変ですね。
ご解答ありがとうございます

お礼日時:2001/07/19 09:27

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aと関連する良く見られている質問

QShellコマンドで別のexeを起動するとフォーカスが別exeにいかない

2本のEXE(AとB)があって、

AからBを呼び出して、Bの終了ボタンを
押すとAに戻るようなプログラムがあります。

Bを最前面にして起動しているのですが、
Bにフォーカスがいってくれません。
(Aに残ったままになっている?)

ちなみにAもBもウィンドウスタイルは、
青いバーが出ている状態(動かせる状態)です。

Bが起動している間、Aはその後ろでまっている
ようなイメージです。

どうやったらフォーカスを渡すことが
できるでしょうか?

<条件>
Bのプログラムは修正することができません。
Aのプログラムは自由に修正できます。

どなたか教えて下さい。

Aベストアンサー

http://www.ops.dti.ne.jp/~allergy/vb/vbvba.html#exec

こちらを参考にしてみて下さい。

QActiveX EXEとタイマーとVB

いつもお世話になってます。

さっそく質問ですが、
ActiveX EXE側にタイマーとテキストボックスを持っています。

VB側のフォームにテキストボックスがあります。

VBからActiveX EXEを起動させ、決まった時間(例えば5秒おき)にVBのテキストボックスに
ある文字を表示させる、ということがしたいです。

条件として、
VB側の動きは、
(1)最初のActiveXを起動
(2)ActiveXのSetとNothingだけしかしない
                  しかしません。
なので、ActiveXからは「RaiseEvents」はしません。

ActiveX側で、タイマーイベント部分に、
ActiveXのフォームのテキストボックス.text = "文字"
set △△ = ActiveXのフォームのテキストボックス
(△△は、ActiveXのフォームのテキストボックスとしてセットされています。)
のように、プログラムしてみたのですが、
VB側のテキストボックスに表示できませんでした。

尚、VB側は、ActiveX以外の処理があるので、途中からActiveXを起動させることになります。

この条件で、VBのテキストボックスに文字を表示させることはできますか?
もしできるとしたら、どのような方法がありますか??

まだネットや本で調べ途中なので、もし何か参考ページがありましたら教えていただきたいです。


よろしくお願いします。

いつもお世話になってます。

さっそく質問ですが、
ActiveX EXE側にタイマーとテキストボックスを持っています。

VB側のフォームにテキストボックスがあります。

VBからActiveX EXEを起動させ、決まった時間(例えば5秒おき)にVBのテキストボックスに
ある文字を表示させる、ということがしたいです。

条件として、
VB側の動きは、
(1)最初のActiveXを起動
(2)ActiveXのSetとNothingだけしかしない
                  しかしません。
なので、ActiveXからは「RaiseEvents...続きを読む

Aベストアンサー

ActiveX EXEを起動する際に、VB側のTextBoxのObjectを渡しておいて、タイマルーチン内でそのTextBox Objectを使って文字を表示させればいいのではないでしょうか。

明後日のことを言ってたらごめんなさい。

QActiveX EXEのオブジェクトに渡したオブジェクトが微妙

またまた微妙な質問ですみません。

-------
ActiveX EXEプロジェクト
Class Hoge

Public Sub Moge(lst)

Dim Cast As ListBox
MsgBox TypeName(lst) 'ListBoxと表示される
Set Cast = lst 'ここがエラー
Cast.List(2) = "hogehoge" 'キャストはできないがVariant型のままのアクセスは可能

End Sub
-------
標準EXE
Class Form1 (List1を配置)

Dim X As New Hoge

Private Sub Form_Load()

X.Moge List1

End Sub
-----

このように、アウトプロセスのオブジェクトにフォームのコントロールを渡しました。
引数の型をAs ListBoxにしたかったのですが、それだとまずそこで型が一致しないといわれます。
しようがないのでVariantで引数を宣言し、渡した後にキャストしようと思ったのですが、そこでも型が一致しないといわれます。
TypeName関数は "ListBox" を返すし、Variant型のままメンバにアクセスすることはできるのですが、ListBox型の変数に代入することだけできないのです。

別プロセスのオブジェクトには、オブジェクトの参照は渡せないのでしょうか?

またまた微妙な質問ですみません。

-------
ActiveX EXEプロジェクト
Class Hoge

Public Sub Moge(lst)

Dim Cast As ListBox
MsgBox TypeName(lst) 'ListBoxと表示される
Set Cast = lst 'ここがエラー
Cast.List(2) = "hogehoge" 'キャストはできないがVariant型のままのアクセスは可能

End Sub
-------
標準EXE
Class Form1 (List1を配置)

Dim X As New Hoge

Private Sub Form_Load()

X.Moge List1

End Sub
-----

このように、アウトプロセスのオブジェクトにフォームのコ...続きを読む

Aベストアンサー

リストボックスをオブジェクト変数にセットして、何をしたいのでしょうか?
それがわかった方が、求める動きが可能かもしれません。

別プロセスでオブジェクトを渡すのは無理かと思います。
もしできるとしたら、オブジェクトのハンドルを取得し、オブジェクト変数の領域を確保。そこに代入という方法が思いつきますが、領域確保が思うようにならないVBでは落ちると思います。

ただリストボックスの選択している場所を得たいとか、選択させたいとか、そういう操作なら別プロセスなら、ハンドルだけで操作する方法もあります。

結局結末は何がしたいのでしょうか?

QActiveX EXE内でのCurDir関数の戻り値

現在、VB6.0 SP5とWindows2000で、ActiveX EXEを用いたアプリケーションの開発を行っています。ActiveX EXEは、自分と同じフォルダ(たとえば、C:\Test\ など)にある初期化ファイル(INIファイル)を読み、自分でデータベースに接続して処理を行うようにしています。

顧客からの要望により、「自分のフォルダ」を取得するのに「CurDir関数」を用いなければいけなくなりました。しかし、どうも、ActiveX EXE内でこの関数を引数なしで呼び出すと、「C:\WinNT\System32」が返ってきてしまいます。

これはActiveX EXEの仕様ということでしょうか?(COM関連のライブラリを使うために、System32フォルダに処理が移っている?)。
簡単なサンプルを作って実証もしたのですが、もうすこし確実な根拠(マイクロソフト関連の資料など)があれば、と思います。どなたか、この件に関する情報をご存知の方、URLか説明をお願い致します。

(App.Pathを利用すれば問題なく取得できるので、この路線を提案したいのですが、CurDirがダメ、という根拠を揃えたいのです)。

現在、VB6.0 SP5とWindows2000で、ActiveX EXEを用いたアプリケーションの開発を行っています。ActiveX EXEは、自分と同じフォルダ(たとえば、C:\Test\ など)にある初期化ファイル(INIファイル)を読み、自分でデータベースに接続して処理を行うようにしています。

顧客からの要望により、「自分のフォルダ」を取得するのに「CurDir関数」を用いなければいけなくなりました。しかし、どうも、ActiveX EXE内でこの関数を引数なしで呼び出すと、「C:\WinNT\System32」が返ってきてしまいます。

これはActiveX E...続きを読む

Aベストアンサー

まず、ActiveX Exeをそのまま実行しているのか、別のプログラムからCOM経由でインスタンスにしているのかによる。

で、COM経由ならば、アウトプロセスCOMインタフェースで動作するので、この呼び出し方法で、「ActiveX Exeのある場所」を正しく取得するためには君の言うとおりAPP.Pathを使用しなくてはならない。

Windowsの制限だとでも言えば良いのではないかな。Active Xの動作原理をつらつら説明するしかないような気もする。

QVBでDosコマンドを動かすには

VB6でDosのコマンドを入力して実行させたいと思っているのですが、どのように設定すればいいのでしょうか?

わざわざVB6からDosプロンプトを起動させるわけではございません。

理想ではテキストボックスにコマンドを入力してボタンを押すと実行すると言う形にしたいのですが・・・。

ご存知の方ご指導よろしくお願いします

たぶんAPIを使うのだと思いますがAPIまだまだ知識不足なので、分かりやすく解説していただければ助かります。
よろしくお願いします。

Aベストアンサー

こんな感じ。

' // 使い方サンプル
Private Sub Command1_Click()
  Dim sBuffer As String
  If ExecCmd(Text1.Text, sBuffer) = True Then
    MsgBox sBuffer, vbInformation, "成功時"
  Else
    MsgBox sBuffer, vbCritical, "エラー時"
  End If
End Sub

' // Dos コマンドを実行する
Public Function ExecCmd( _
    ByVal Command As String, _
    ByRef Buffer As String _
) As Boolean

  ' @引 数:Command 実行する Dos コマンド
  ' @引 数:Buffer 実行結果またはエラーメッセージを受ける
  ' @戻り値:成功時 True / エラー時 False
  ' @備 考:一瞬 Dos 窓が開きます
  
  Dim WSH As Object
  ExecCmd = False
  If Len(Command) > 0 Then
    Set WSH = CreateObject("WScript.Shell")
    With WSH.Exec("%ComSpec% /c " & Command)
      Do While .Status = 0
        DoEvents
      Loop
      ' Return
      If Not .StdErr.AtEndOfStream Then
        Buffer = .StdErr.ReadAll
      Else
        ExecCmd = True
        Buffer = .StdOut.ReadAll
      End If
    End With
    Set WSH = Nothing
  End If

End Function

こんな感じ。

' // 使い方サンプル
Private Sub Command1_Click()
  Dim sBuffer As String
  If ExecCmd(Text1.Text, sBuffer) = True Then
    MsgBox sBuffer, vbInformation, "成功時"
  Else
    MsgBox sBuffer, vbCritical, "エラー時"
  End If
End Sub

' // Dos コマンドを実行する
Public Function ExecCmd( _
    ByVal Command As String, _
    ByRef Buffer As String _
) As Boolean

  ' @引 数:Command 実行する Dos コマンド
  ' @引 数:Bu...続きを読む


このカテゴリの人気Q&Aランキング

おすすめ情報