アプリ版:「スタンプのみでお礼する」機能のリリースについて

実行ファイル(abc.exe)を実行した時に出るコンソール画面を非表示にすることは出来ますか?
ちなみにC++言語を使っていて、cygwinでコンパイルしています。どなたか宜しくお願いします。

A 回答 (3件)

Subsystem:Windowsで作成してください、かな。



Cygwinで作ると、デフォルトがConsoleアプリなので、
OS側で勝手に用意して表示されます。

(かなり無理やりにしか)消せません。Win32APIで後付できなくはないですが、
一般的ではありませんし一瞬表示される可能性があります。

# Cygwin版MinGWでやったことはないので、もしかするとWindowsNative版MinGWが別途いるかも知れません。
    • good
    • 0

 


他に回答が付かないということは、一般的な方法がないということかな。
かなりの反則技ですが、次の手順で可能なハズです。
 
1)exeファイルをStirlingなどのバイナリ・エディタで開く
2)先頭の2バイトが"MZ"の文字であることを確認する
3)003C~003Fの4バイトを逆に並べる。例えば"E8 00 00 00" なら000000E8となる
4)3)のアドレスに移動し、そこの2バイトが"PE"の文字であることを確認する
5)3)のアドレスの5Dhバイト先の値が"03h"または"07h"であることを確認する
6)5)の"03h"または"07h"を"02h"に書き換える
7)保存してバイナリエディタを終了する
 
exeを直に編集するので、メンドクサイかも。
この手順を自動実行するツールを自作してmakefileに組み込むと良いかもね。
 
    • good
    • 0
この回答へのお礼

アドバイスありがとうございます。
手順通りにやってみたのですがうまくいきません。
なにせバイナリ初心者な者でやり方が間違っているのかもしれません。

<私の行った手順は次のとおりです>
003C~003Fは"80 00 00 00"だったので"00 00 00 80"に変更しました。ちなみに"00 00 00 80"っていうのは上から9行目のことですよね?!これはちゃんと"50 45"で"PE"になっていました。

そして「5Dhバイト先の値が"03h"または"07h"であることを確認する」っていうのが確認できないです。
"00 00 00 80"の5Dhバイト先となると、私の場合、上から14行目の"00DD"になると思うのですが、ここは"00"となっています。"03"でも"07"でもありません。

ちなみに"00DC"は"03"だったのでこれを"02"に書き換えて保存してから、exeファイルを実行したのですが、立ち上がりませんでした。ほんの一瞬だけコンソール画面表れ、すぐに消え、その後は何も起こりませんでした。

ここまで読まれて、何か私のやり方が間違っていると思われるところがあればご指摘いただけるとありがたいです。よろしくお願いします。

お礼日時:2008/01/12 22:11

 


> 003C~003Fは"80 00 00 00"だったので"00 00 00 80"に変更しました。
 
原因はたぶんここです。
頭の中で並び替えるだけで、実際にファイルの値は変更しないでください。
私の書き方がマズかったですね。すみません。
 
ちなみに、手順5の「5Dhバイト先」は「5Chバイト先」の間違いですので、nobungさんがやったことで合ってます。
 
    • good
    • 0
この回答へのお礼

出来ました!
私にも分かるように、わざわざ丁寧に、本当にありがとうございました。
助かりました。

お礼日時:2008/01/15 12:06

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