DOBON.NET DOBON.NETプログラミング掲示板過去ログ

VB6.0とVC++6.0で作成したアプリに関して

環境/言語:[Windows2000, XP]
分類:[VB6以前]

こんにちは。

今、次のDLL@とEXE@があり、これを使用するプログラムを作成しています。
DLL@:MFCのWinInetクラスを用いてインターネット通信を行うActiveXのDLL
EXE@:DLL@を使用して処理を行うEXE

ここで、EXE@をCreateProcess()より起動するプログラムを作成したいのですが、
VC++6.0のコンソールアプリで作成した場合は問題なく動作し、
VB6.0で作成した場合は、WinInetの通信処理で失敗します。
 (サーバー名またはアドレスは解決されませんでした)

VB6.0で作成した場合と、VC++6で作成した場合とで、
デフォルトの実行環境的なものに違いがあるのかと思うのですが、
VC++6.0のコンソールアプリからCreateProcessした場合と、
VB6.0からCreateProcessした場合とで、違いがあるのでしょうか?
2006/06/13(Tue) 14:02:17 編集(投稿者)

> MFCのWinInetクラスを用いて
MFCのDLLを使う場合、特別な記述が必要だったような。
参考スレ)
http://www.bcap.co.jp/hanafusa/vbbbs/wforum.cgi?mode=allread&no=5382
ご返答ありがとうございます。

> http://www.bcap.co.jp/hanafusa/vbbbs/wforum.cgi?mode=allread&no=5382
ありがとうございます。参考にさせていただきます。


> >VC++6.0のコンソールアプリからCreateProcess
> はMFCを利用するにしてあるコンソールアプリですか?
いえ、"MFCを使用しない"です。

説明が足らなくてすみません。
DLL@とEXE@は機能として閉じたといいますか、完成している機能です。
通常は手動でDOS上でEXE@を実行するのですが、
今回、このEXE@を別のプロセスから呼び出して利用したいのです。

よって、単純にプロセス起動ができればよいので
VC++6.0でもVB6.0でも同じだと思っていたのですが、
VB6.0のほうだと上手くいきません。
VB側のCreateProcessの記述はどうなっていますか?(API宣言や呼び出しのところ)
calcやnotepadでも正常に動きますか?

※丸付き数字は機種依存文字です。どの機種から閲覧されるかわからないWebサイ
  トや掲示板では文字化けの原因になるので使用しないほうが良いでしょう。
> VB側のCreateProcessの記述はどうなっていますか?(API宣言や呼び出しのところ)

下記のようになっております。
なお、sa.bInheritHandle に 1 を指定しても結果は変わりませんでした。


Public Declare Function CreateProcess Lib "kernel32"
Alias "CreateProcessA" (ByVal lpApplicationName As String,
ByVal lpCommandLine As String,
lpProcessAttributes As SECURITY_ATTRIBUTES,
lpThreadAttributes As SECURITY_ATTRIBUTES,
ByVal bInheritHandles As Long,
ByVal dwCreationFlags As Long,
lpEnvironment As Any,
ByVal lpCurrentDriectory As String,
lpStartupInfo As STARTUPINFO,
lpProcessInformation As PROCESS_INFORMATION)
As Long

Dim sa As SECURITY_ATTRIBUTES
Dim sInfo As STARTUPINFO
Dim pInfo As PROCESS_INFORMATION
Dim lngResult As Long

With sa
.bInheritHandle = 0
.lpSecurityDescriptor = 0
.nLength = LenB(sa)
End With

With sInfo
.cb = LenB(sInfo)
.dwFlags = STARTF_USESTDHANDLES & STARTF_USESHOWWINDOW
.wShowWindow = SW_HIDE
End With

lngResult = CreateProcess(vbNullString, _
"EXEのパス", _
sa, _
sa, _
0, _
NORMAL_PRIORITY_CLASS, _
0, _
vbNullString, _
sInfo, _
pInfo)


> calcやnotepadでも正常に動きますか?
動きます。

> ※丸付き数字は機種依存文字です。どの機種から閲覧されるかわからないWebサイ
> トや掲示板では文字化けの原因になるので使用しないほうが良いでしょう。
拝承しました。すみませんでした。

DOBON.NET | プログラミング道 | プログラミング掲示板