tagCANDY CGI VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板
VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板
[ツリー表示へ]  [ワード検索]  [Home]

タイトル Re^3: vb6での標準出力
投稿日: 2017/09/29(Fri) 14:24
投稿者魔界の仮面弁士
> お返事ありがとうございます。
すれ違いで、先の回答 ( No16367 ) を少し追記修正しています。m(_ _)m


> (1)activex.dllですが、一部この方法も使っていますが
レジストリを汚したくないのなら、先の DDE も検討してみてください。
ちなみに DDE は、Excel の読み書き制御にも使えます。(Excel 本体は必要ですが)


> 仕様変更(設計ミスですが)が頻発なので、
呼ばれる DLL に手を加えるのではなく、呼び出す EXE 側のマニフェスト保守が可能ならば、
Side-by-Side を使って非互換性の問題を回避する手もあります。(レジストリ登録不要)
https://msdn.microsoft.com/ja-jp/library/cc482775.aspx#vbxp2-3
https://msdn.microsoft.com/ja-jp/library/ms811700.aspx#sidebyside_topic8


> (2) vb.netのexeは標準出力ができるので
Console クラスの内部実装を読んでみるとか。
https://referencesource.microsoft.com/#mscorlib/system/console.cs


> (3)formを使わない sub main -> end ->end subのプログラムはコンソールアプリだと
> 持っていましたが、間違いなのですね。
「Form を表示するコンソールアプリ」なら、EXE をダブルクリックするとコンソールが表示されます。
しかし、「Form を表示しない Windows アプリ」では、コンソールは表示されませんね。

ちなみに EXE ファイル内の IMAGE_OPTIONAL_HEADER32.Subsystem という領域に、
コンソールアプリ(IMAGE_SUBSYSTEM_WINDOWS_CUI)なのか
Windows アプリ(IMAGE_SUBSYSTEM_WINDOWS_GUI) なのかが記録されています。
https://codezine.jp/article/detail/412
https://msdn.microsoft.com/en-us/library/windows/desktop/ms680547.aspx

 0x0000 : unknown subsystem
 0x0001 : device driver / native system processes
 0x0002 : Windows GUI subsystem (普通に作るとこれ)
 0x0003 : Windows CUI subsystem (コンソールアプリはこれ)
 0x0005 : OS/2 CUI SubSystem
 0x0007 : Posix CUI subsystm
 0x0008 : native Windows 9x driver
 0x0009 : Windows CE system
 0x000A : EFI application
 0x000B : EFI driver(boot services)
 0x000C : EFI driver(run-time services)
 0x000D : EFI ROM image
 0x000E : XBOX system
 0x0010 : Boot application

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。