A.EXE と B.EXEがあったとします。
A.EXEからShellExecuteアプリケーションB.EXEを立ち上げたとします。
その時にA.EXEを終了せずにB.EXEの処理が終わり次第、B.EXEからA.EXEを、
終了させたいのですが、可能でしょうか?
いろいろと調べてみたのですが、見当がつきません。
どなかたご教授願えませんでしょうか?

ちなみにVC++6.0MFCです。

A 回答 (2件)

こんにちは。

itohhといいます。

A.EXEがウィンドウを持っているものとして回答します。

NNJA104さんの回答でほぼ良いと思うのですが、送るメッセージは、WM_CLOSEのほうが良いと思います。
一般的にOnClose(WM_CLOSEが受信されたとき)イベントで終了処理を行うのがベストだと思うからです。

1についての例を記載すます。
(B.EXE内の作り)
HWND hWnd;
hWnd = ::FindWindow( NULL, "A.EXEのウィンドウ名");
::PostMessage(hWnd, WM_COLSE, 0, 0);

(A.EXE内の作り)
CWnd::OnCloseに飛ぶのでメモリの解放などの終了処理を行う。

A.EXEのウィンドウ名とは、タスクマネージャーに表示される名称です。
    • good
    • 0
この回答へのお礼

わかりやすい説明ありがとうございました。
参考にさせて頂きます。

お礼日時:2001/06/13 13:07

んーと、A.EXEから監視をしているのならば話しは簡単なのですが、B.EXEから指示したいのですよね?


経験は有りませんが...

1.API32のFindWindowでA.EXEを探し、見付けたインスタンスハンドル(HINST)からウィンドウハンドル(HWND)を更に探り、そのHWNDに破棄(WM_DESTROY)を投げる。

2.B.EXE起動時にA.EXEからウィンドウハンドルを引き渡す。そのHWNDに破棄(WM_DESTROY)を投げる。

3.DDE通信を行って相互通信する。

のいずれかで可能かな。ちょっと自信無しです。
    • good
    • 0
この回答へのお礼

早速ご教授していただいた内容を試してみたいと思います。
ありがとうございました。

お礼日時:2001/06/13 13:02

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

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

Q今度10数名の研修が終了しますが、終了後の意見交換などのコミュニティの

今度10数名の研修が終了しますが、終了後の意見交換などのコミュニティの場を、ネット上に設けたいと考えております。それには(SNS やブログ)などが考えられると思いますが、このようなコミュニティの形成にはどちらが向いているのでしょうか?
私も普通のブログは経験があるのですが、詳しいことは分かりません。またSNSはやったことがありません。皆さまのご意見をお聞かせいただければと存じます。

(SNS やブログ)にもいろいろあるようですが、どこか適当なサービスがご存知でしたら教えていただけますでしょうか。よろしくお願いいたします。

Aベストアンサー

ブログの場合、アカウントを持っている人しか記事が書けないので、そこに他の人がコメントを付ける形になります。別の人もブログのアカウントを作ればそこでまたコメントを付ければ良いのですが、それぞれが別のブログを持つことになります。全員のブログをチェックしないと誰が何を記事にしたか判らないのと、横断的なコミュニケーションが難しいと思います。

SNSの場合、横の繋がりを登録しますので、誰かが記事(日記)を書くと判るようになっています。個人情報がグループ化された人全員に見えてしまうので、選定したSNSを既に個人で利用している人は困惑するかもしれません。他の利用者からグループの存在は見えるようになっています。

So-netがグループ向けに閉じられたSNSを作れるサービスをしていましたが、現在はサービス終了がアナウンスされています。もしかしたら他に同等の物があるかも知れません。

参考URL:http://www.so-netsns.jp/

Q2 ~ 200 の素数 a, b, c (a < b < c) が、b - a = c - b を満たすa,b,cをビット操作を用いて求め、すべてを表示せよ

ちょっと考えてみました。でも、分かりません・・・まず、int型のintvalに200bitを割り当てて、intval=0としたいのですが、どうしたらいいのでしょう??
とりあえず考えてみたプログラムを誰か見て下さい!!お願いします。
#define BYTESIZE 200
#define MAX 200
main()
{
int i,j,intval=0;
for(i=2;i<=MAX/2;i++)
{
if(intval&(1<<(i-1)){}
else for(j=i*2;j<=MAX;j+=i)intval|=(1<<(j-1));
}/*素数を0、それ以外を1に
for(i=2;i<=MAX/2;i++)
for(j=2;j<=(MAX-i)/2;j++)
if((intval&(1<<(i-1))&&(intval&(i+j-1))&&(intval&(1<<(i+2*j-1)))) print("%3d %3d %3d (%3d)\n",i,i+j,i+2*j,j);
}/*三つ子の素数を調べ出力

ちょっと考えてみました。でも、分かりません・・・まず、int型のintvalに200bitを割り当てて、intval=0としたいのですが、どうしたらいいのでしょう??
とりあえず考えてみたプログラムを誰か見て下さい!!お願いします。
#define BYTESIZE 200
#define MAX 200
main()
{
int i,j,intval=0;
for(i=2;i<=MAX/2;i++)
{
if(intval&(1<<(i-1)){}
else for(j=i*2;j<=MAX;j+=i)intval|=(1<<(j-1));
}/*素数を0、それ以外を1に
for(i=2;i<=MAX/2;i++)
for(j=2;j<=(MAX-i)/2;j++)
if((intval&...続きを読む

Aベストアンサー

まずint型は200ビットもありません。通常は32ビットです。
200ビット使いたければint型を7個用意する必要があります。
つまり
int intval[7];
宣言して、
intval[0] 0~31ビット
intval[1] 32~63ビット
intval[2] 64~95ビット
.
.
.
intval[6] 182~200ビット
として使います。

第iビットの情報を取り出すときは
(intval[i>>5]>>(i&31))&1

第iビットを1にするときは
intval[i>>5]|=1<<(i&31);

とすれば良いでしょう。
関数やマクロを用意することをお勧めします。
例えば
int get(int intval[],int i)
{
return (intval[i>>5]>>(i&31))&1;/*0か1が返って来る。*/
}

void on(int intval[],int i)
{
intval[i>>5]|=1<<(i&31);
}

という感じです。

まずint型は200ビットもありません。通常は32ビットです。
200ビット使いたければint型を7個用意する必要があります。
つまり
int intval[7];
宣言して、
intval[0] 0~31ビット
intval[1] 32~63ビット
intval[2] 64~95ビット
.
.
.
intval[6] 182~200ビット
として使います。

第iビットの情報を取り出すときは
(intval[i>>5]>>(i&31))&1

...続きを読む

QSo-netSNSの代わりになりうるサービス(ML付き希望)

So-netのSNSレンタルサービスが終了することになってしまいましたが、代わりになりうる無料サービスを探しています。
無料のSNSレンタルは探せば色々あるのですが、出来れば、So-netSNS同様、コミュニティにML機能が付属している所が希望なのですが、どこかにないでしょうか。

Aベストアンサー

コメントありがとうございます。
それで、そ~しゃるぱ~くはお眼鏡にかなわなかったと?

逆にFreeMLは以前、MLとして使ったことはありますが、コミュニティ機能としてどれくらい要望を満たすのか不明。

参考URL:http://www.freeml.com/

QMFCのexeのプログラムを MFCのdllに書き換えたい

VC++6.0を使用しています

新規作成
MFC AppWizard(exe)
新規
OK
[ステップ1]
ダイアログベース
次へ
[ステップ2/4]
次へ
[ステップ3/4]
次へ
[ステップ4/4]
終了

で作られた、雛型のexeをそっくりMFCのDLLに書き換えたい
と考えています
exeで作られたアプリを他のユーザーがVB6.0からDLLとして呼び出したいので書き換えて欲しいと頼まれました

MFCのDLLも雛型は簡単に出来上がるのですが
以下の関数を独立したオブジェクトにして、VB6.0からDLLの関数VBFUNC1として呼び出したいのですが、VBから呼び出すと

AfxEnableControlContainer();でアサートで引っ掛かってしまいます

ダイアログを使用したMFCのEXEをDLLとして使う場合の、コーディングについてご指南ください

BOOL CAaaApp::VBFUNC1()
//BOOL CAaaApp::InitInstance()
{
  AfxEnableControlContainer();

#ifdef _AFXDLL
  Enable3dControls();
#else
  Enable3dControlsStatic();
#endif

  CAaaDlg dlg;
  m_pMainWnd = &dlg;
  int nResponse = dlg.DoModal();
  if (nResponse == IDOK)
  {
  }
  else if (nResponse == IDCANCEL)
  {
  }
  return FALSE;
}

VC++6.0を使用しています

新規作成
MFC AppWizard(exe)
新規
OK
[ステップ1]
ダイアログベース
次へ
[ステップ2/4]
次へ
[ステップ3/4]
次へ
[ステップ4/4]
終了

で作られた、雛型のexeをそっくりMFCのDLLに書き換えたい
と考えています
exeで作られたアプリを他のユーザーがVB6.0からDLLとして呼び出したいので書き換えて欲しいと頼まれました

MFCのDLLも雛型は簡単に出来上がるのですが
以下の関数を独立したオブジェクトにして、VB6.0からDLLの...続きを読む

Aベストアンサー

まず、DLLとEXEの違いについてわかっていますか?
DLLとは"他のEXEやDLLに対して機能を提供するもの"です。

単体では役に立たず、直接・間接にEXEから呼ばれて役に立つものです。

DLLを作成するには、DLLの役割を明確にしなければなりません。
通常、関数の形で提供することが多いですが、
クライアントがC++であれば、C++クラスを提供することも可能です。

この提供することを"エクスポート"と呼びます。
エクスポートするためには特別な指定が必要です。

詳細はこちらで参考になります
http://hp.vector.co.jp/authors/VA023539/tips/dll/001.htm

なお、VB6がクライアントの場合、DEFファイルも必要です。
http://www.geocities.jp/i_love_balard/myhome/vbdll.html

さらに, DLL側でメッセージ処理を行わせるには
いくつかの注意点があります。
http://msdn.microsoft.com/ja-jp/library/30c674tx.aspx

色々大変です。

ただ単にVBからVC++のアプリを呼び出したいなら
わざわざDLLにするよりも
Shell関数のほうが簡単だと思います。

http://hanatyan.sakura.ne.jp/vbhlp/tap_shell.htm

まず、DLLとEXEの違いについてわかっていますか?
DLLとは"他のEXEやDLLに対して機能を提供するもの"です。

単体では役に立たず、直接・間接にEXEから呼ばれて役に立つものです。

DLLを作成するには、DLLの役割を明確にしなければなりません。
通常、関数の形で提供することが多いですが、
クライアントがC++であれば、C++クラスを提供することも可能です。

この提供することを"エクスポート"と呼びます。
エクスポートするためには特別な指定が必要です。

詳細はこちらで参考になります
http://...続きを読む

Qどんな趣味の人も楽しめる無料SNSを教えて下さい

Yahoo Daysもgooホームも終了が決定し、友達といっしょに引越しできる似たような感じのSNSを探しています。

友達の要望でmixi facebook twitter、GREE以外のところでお願いします。

条件は

(1) 無料であること
(2) ゲーム系、子育て系など何かに特化したところではないこと。
  (雑談が楽しみたいのです)
(3) ひとことに対するコメントが一覧になって見られること
(4) 本名を表示名にしなくていいこと

どうぞよろしくお願いします!

Aベストアンサー

Googleのバズではダメかな?

QShellExecuteでDOSコマンド実行したら...

VC++6.0においてShellExecuteでDOS窓をたち上げてコマンドを
実行したいのですが、うまくいきません。

1.ShellExecute(m_hWnd,"open","command.com","dir",NULL,SW_SHOW);
...とすると”指定された COMMAND 検索ディレクトリが違います.”となり、
なにも実行されません。

2.ShellExecute(m_hWnd,"open","command.com","dir /?",NULL,SW_SHOW);
...とするとちゃんとdirのヘルプが表示されますが、すぐに窓が閉じます。

3.ShellExecute(m_hWnd,"open","command.com","dir /? > out.txt",NULL,SW_SHOW);
...としてもファイルが作られず、2.と全く同じ結果になってしまいます。

これはどうしてこのような現象が起きるのでしょうか?
DOSプロンプトをたち上げて同様なコマンドを実行した場合はちゃんと期待通りの結果が得られます。
あと、DOS窓が閉じないようにするにはどうすればいいのでしょうか?

VC++6.0においてShellExecuteでDOS窓をたち上げてコマンドを
実行したいのですが、うまくいきません。

1.ShellExecute(m_hWnd,"open","command.com","dir",NULL,SW_SHOW);
...とすると”指定された COMMAND 検索ディレクトリが違います.”となり、
なにも実行されません。

2.ShellExecute(m_hWnd,"open","command.com","dir /?",NULL,SW_SHOW);
...とするとちゃんとdirのヘルプが表示されますが、すぐに窓が閉じます。

3.ShellExecute(m_hWnd,"open","command.com","dir /? > ou...続きを読む

Aベストアンサー

3.の部分について。
VBで似たような事をしたときのことですが。

「COMMAND/C DIR > C:\DIR.TXT」とやら無いと
リダイレクトの結果が残せませんでした。

参考になりましたら。

Qジャンル特化型のSNSを立ち上げたい

ミクシィとかグリーのようなオールラウンドなSNSではなくて、あるジャンルに特化したSNSを立ち上げたいと考えています。

特化型のSNSでうまく行きそうなジャンルや、上手く行っているSNSがあれば教えてください。

Aベストアンサー

ただSNSを構築するだけなら簡単ですが、ミクシィやGREEとの違いを鮮明にしないと、集客が厳しくなります。

ミクシィのような大手SNSのコミュニティでは加入しづらいジャンルを狙うといいのではないでしょうか。

ゲイのSNS
http://gaycom.jp/xc/menu/top

キャバクラのSNS
http://cabanet.jp/

とか、ですね。

参考URL:http://gaycom.jp/xc/menu/top,http://cabanet.jp/

QMFCのView終了時の終了確認

環境:WindowsXP + VisualStudio2010 + MFC

MFCのViewの終了処理に関して質問があります。
Viewの右上の×印をクリックした際に終了確認を表示して
ユーザーが終了を拒否した場合、Viewの終了を無効にしたい
と考えています。

MFCでこのような制御を行うには、どのようなイベントで
どのような処理をすれば良いのでしょうか?

ご存知の方がいたら教えて下さい。
どうぞ宜しくお願い致します。

Aベストアンサー

Viewと言われているのかわからないので違うかもしれませんが。
×印はシステムコマンドに該当する機能ですから、WM_SYSCOMMANDを使えば可能ですよ。
×印がクリックされるとnIDにSC_CLOSEが送られてきますから、メッセージボックスを出してNOならデフォルト処理を省略するようにすればいいです。

但し処理する場所はCMainFrameの方です。
WM_SYSCOMMANDのハンドラ作って、以下の感じで制御できます。

void CMainFrame::OnSysCommand(UINT nID, LPARAM lParam)
{
  if((nID != SC_CLOSE) || ((nID == SC_CLOSE) && (MessageBox(_T("終了しますか?"), _T("終了"), MB_YESNO) == IDYES))) {
    CFrameWndEx::OnSysCommand(nID, lParam);
  }
}

Q「教えて!goo」はSNSですか?

WindowsOSとは関係ないのですが
SNS(ソーシャル・ネットワーキング・サービス)という言葉をよく見かけます。
ミクシイがその代表的なものとして常に紹介されています。
私はミクシイ会員ではないので、実感としてSNSのことが解りませんが
「教えて!goo」は次のどれに該当するものなのでしょうか?
1. まさにSNSである。(SNSそのものである)
2. SNSとも言える。(広義のSNSである)
3. SNSとは言えない。(SNSという分類には入らない)
4. 一般の掲示板である。
以上です。

Aベストアンサー

3.ですかね。

掲示板と勘違いしている方、結構いるんですよね……
会員間の歓談の場と勘違いしているような質問をたまに見かけますね。

ソーシャル・ネットワーキング・サービス - wikipedia
http://ja.wikipedia.org/wiki/%E3%82%BD%E3%83%BC%E3%82%B7%E3%83%A3%E3%83%AB%E3%83%BB%E3%83%8D%E3%83%83%E3%83%88%E3%83%AF%E3%83%BC%E3%82%AD%E3%83%B3%E3%82%B0%E3%83%BB%E3%82%B5%E3%83%BC%E3%83%93%E3%82%B9
参考にどうぞ。

Q”int *a,*b”というポインタ変数宣言した値でa=&bということ

”int *a,*b”というポインタ変数宣言した値でa=&bということはできる?


”int *a,*b”このような変数をグローバル宣言した場合、
a=&bというようなことはできるのでしょうか?


”int *a,*b”
この宣言で、
aが10番地
bが20番地に定義されたと仮定しています。

Aベストアンサー

#6です。
>回答頂きありがとうございます。
>一応整理させてください。
>質問1:
>(1)int *a, *b; //宣言
>(2)a = b;
>これをメモリアドレスの変化で見ていった場合、
>(1)
>アドレス10:a NULL
>アドレス20:b (仮に1200)
>(2)
>アドレス10:a (仮に1200)
>アドレス20:b (仮に1200)
回答:
OKです。但し
アドレス10:a NULL のところは正確には、アドレス10:a 不定
となります。
不定の意味は初期化していないので何が入っているか判らない。
(0かも知れないし、そうでないかも知れない。あるいは35かも知れないし、そうでないかもしれない)
という意味です。(NULLの箇所は以降同じです)


>質問2:
>(1)' int *a, *b; //宣言
>(2)' a = (int *)&b;
>これをメモリアドレスの変化で見ていった場合
>(1)'
>アドレス10:a NULL
>アドレス20:b NULL
>(2)'
>アドレス10:a 20
>アドレス20:b NULL
>このような違いがあるということですね。
回答
はい、その通りです。

>質問3:
>int *a, *b; //宣言
>a=&b;
>このやり方はできないので、
>もし、やりたいのならば、
>(1)'' int **a, *b //宣言
>(2)'' a=&b;
>これをメモリアドレスの変化で見ていった場合
>(1)''
>アドレス10:a NULL
>アドレス20:b NULL
>(2)''
>アドレス10:a 20
>アドレス20:b NULL
>このようにメモリ内が変化していくということなんでしょうか?
回答
はい、その通りです。
>質問3のポインタのポインタの使い方はこれでよいでしょうか?
回答
はい、よいです。
ちなみに、このような事例に遭遇することはないでしょうが、
int ***a,**b;
の場合、a=&bは構文的に正しいです。
a=(int***)b;(強引なキャスト)
も正しいです。
int *a;
int **a;
int ***a;
の違いを理解することが必要です。
使いませんが、
int **********a;なども構文的にはありです。

#6です。
>回答頂きありがとうございます。
>一応整理させてください。
>質問1:
>(1)int *a, *b; //宣言
>(2)a = b;
>これをメモリアドレスの変化で見ていった場合、
>(1)
>アドレス10:a NULL
>アドレス20:b (仮に1200)
>(2)
>アドレス10:a (仮に1200)
>アドレス20:b (仮に1200)
回答:
OKです。但し
アドレス10:a NULL のところは正確には、アドレス10:a 不定
となります。
不定の意味は初期化していないので何が入っているか判らない。
(0かも知れないし、そうでないかも知れない。あるいは35かも知れない...続きを読む


人気Q&Aランキング

おすすめ情報