🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: fj.lang.visualbasic
9 messages
9 total messages Started by Toshiya Suzuki Tue, 17 Feb 1998 00:00
VBで他アプリケーションの起動と終了をしたい
#662
Author: Toshiya Suzuki
Date: Tue, 17 Feb 1998 00:00
8 lines
860 bytes
みなさん、こんにちは。鈴木といいます。

VBのShell関数でアプリケーションを起動した後、
VBからそのアプリケーションを終了させたいのですが、
どうすればできるのでしょうか。API関数のExit
Windowあたりかなと思ったのですが、いまいち使
い方がわかりません。どなたか御教授ください。
Re: VBで他アプリケーションの起動と終了をしたい
#663
Author: Kuniyoshi Mohri
Date: Tue, 17 Feb 1998 00:00
20 lines
1495 bytes
こんにちは!
モーリ@ITCシステムです。
ExitWindowsは、Windowsが終了してしまいます。
方法としては、GetWindow(だったと思う)でハンドルを取得して、
それに対して、終了用のAPI CloseWindow(だったと思う)をするのだと思いまし
た。
PostQuitMessageでWM_CLOSEを送ってもよいと思います。
回答になっていないので、ちゃんと調べてお知らせします。


Toshiya Suzuki wrote in message <6caubm$25t$1@s4leia1.kcc.co.jp>...
>みなさん、こんにちは。鈴木といいます。
>
>VBのShell関数でアプリケーションを起動した後、
>VBからそのアプリケーションを終了させたいのですが、
>どうすればできるのでしょうか。API関数のExit
>Windowあたりかなと思ったのですが、いまいち使
>い方がわかりません。どなたか御教授ください。
>
Re: VBで他アプリケーションの起動と終了をしたい
#673
Author: Toshiya Suzuki
Date: Wed, 18 Feb 1998 00:00
29 lines
1928 bytes
In article <6cb4fc$dio$1@nn-os001.ocn.ad.jp>, na201599@fsinet.or.jp says...
>
>こんにちは!
>モーリ@ITCシステムです。
こんにちは!御教授ありがとうございます。

>ExitWindowsは、Windowsが終了してしまいます。
うぅぅ、顔から火がでるほど恥ずかしい…。
ExitProcessを使うのかな、の間違えでした^^;。

>方法としては、GetWindow(だったと思う)でハンドルを取得して、
>それに対して、終了用のAPI CloseWindow(だったと思う)をするのだと思いまし
>た。
>PostQuitMessageでWM_CLOSEを送ってもよいと思います。
>回答になっていないので、ちゃんと調べてお知らせします。
Shell関数の復帰値(プロセスID?)からウィンドウハンドルを取得する
方法が分らないのです。いろいろ調べてますけど…。頭が痛くなります。

一応他の人からの御教授で解決しましたので、その方法を書いておきます。

>1.Shell関数の戻り値でプロセスIDを取得
>2.プロセスIDからOpenProcess()でプロセスハンドルを取得
>3.取得したプロセスハンドルに対してTerminateProcess()する
これでできるのですが、API関数のヘルプを見ると危険だから
使わないほうがよいと書いてあるのです。

何とか安全に終了させることはできないでしょうか?
よい知恵がありましたら教えてください。
Re: VB で他アプリケーションの起動と終了をしたい
#675
Author: Sato Masahiro
Date: Wed, 18 Feb 1998 00:00
49 lines
2526 bytes
>In article <6cb4fc$dio$1@nn-os001.ocn.ad.jp>, na201599@fsinet.or.jp says...
>>方法としては、GetWindow(だったと思う)でハンドルを取得して、
>>それに対して、終了用のAPI CloseWindow(だったと思う)をするのだと思いまし
>>た。

CloseWindow だと、アイコン化してしまいますね? :-)

>>PostQuitMessageでWM_CLOSEを送ってもよいと思います。

PostQuitMessage や、DestroyWindow などは、他のスレッドに対しては
使用できないような気がするので、SendMessage などを使用した方が
良いとおもいます。

In article <6ce4m9$8d0$1@s4leia1.kcc.co.jp>, Toshiya Suzuki wrote:
>Shell関数の復帰値(プロセスID?)からウィンドウハンドルを取得する
>方法が分らないのです。いろいろ調べてますけど…。頭が痛くなります。

あまり良い方法でないかもしれませんが、以下の方法ではどうでしょうか。

1. デスクトップウィンドウに対して GetTopWindow を行う
2. 得られたウィンドウの次のウィンドウを GetWindow で取得
3. 得られたウィンドウのプロセス ID を取得。
4. Shell 関数の戻り値と 3. で得られた ID が等しいならば、WM_CLOSE を送る。
5. 次のウィンドウがなくなるまで、2. へ戻る。

以下は適当に作ったサンプルです。

hwnd = GetTopWindow(GetDesktopWindow())
Do
    hwnd = GetWindow(hwnd, GW_HWNDNEXT)

    GetWindowThreadProcessId hwnd, hwndprocID
    If hwndprocID = ProcessID Then
        If (GetWindowLong(hwnd, GWL_STYLE) And WM_DISABLED) = 0 Then
            SendMessage hwnd, WM_CLOSE, 0, 0
        End If
    End If

Loop While hwnd <> 0

間違いなどありましたら、ご指摘ください。

#あと、Windows API 関数に関する話なので、これ以上話題が続くようならば
#fj.os.ms-windows.programmingに移った方が良いかもしれません。

-- 
Computer Institute of Japan, Ltd.
佐藤正宏 masahiro@cij.co.jp
Re: VBで他アプリケーションの起動と終了をしたい
#611
Author: Shigeru Katoh
Date: Sun, 22 Feb 1998 00:00
17 lines
1215 bytes
しげるです。

すみませんが、便乗質問させてください。

クライアントのVBからNT Serverにあるモジュールを
NT上で動作させたいのですが、どうすればよいのでしょうか?

VBからのメッセージを受ける、プログラムを作りたくないので。

よろしくお願いします。

-- 
------------------------------------------------------------
横河ディジタルコンピュータ(株) BAシステム2Gr. 加藤 滋
e-mail : shigeru_katoh@ydc.co.jp
------------------------------------------------------------
Re: VB で他アプリケーションの起動と終了をしたい
#620
Author: Sato Masahiro
Date: Mon, 23 Feb 1998 00:00
11 lines
1024 bytes
In article <6cp2q9$f4j@bacchus.tfd.ydc.co.jp>, Shigeru Katoh wrote:
>クライアントのVBからNT Serverにあるモジュールを
>NT上で動作させたいのですが、どうすればよいのでしょうか?

今一つ質問の意図を理解していないのですが、例えば AT コマンドを
使用する、という答えでは回答になっていませんでしょうか?

-- 
Computer Institute of Japan, Ltd.
佐藤正宏 masahiro@cij.co.jp
Re: VBで他アプリケーションの起動と終了をしたい
#622
Author: Kuniyoshi Mohri
Date: Mon, 23 Feb 1998 00:00
16 lines
1286 bytes
こん○○は、モーリ@ITCシステムです。

>クライアントのVBからNT Serverにあるモジュールを
>NT上で動作させたいのですが、どうすればよいのでしょうか?



これをやるには、DCOMとか言う技術を使用するとよいのではないでしょうか?
私も不勉強でよくは知りませんが、DCOMだとサーバーのモジュールを動かすこと
が出来ると
聞いたことがあります。

*************************************************
                毛 利 邦 是  E-mail : mouri@itc-system.co.jp
*************************************************
Re: VBで他アプリケーションの起動と終了をしたい
#536
Author: yuta
Date: Tue, 24 Feb 1998 00:00
32 lines
2398 bytes
"Kuniyoshi Mohri" <na201599@fsinet.or.jp> writes:

> >クライアントのVBからNT Serverにあるモジュールを
> >NT上で動作させたいのですが、どうすればよいのでしょうか?
> これをやるには、DCOMとか言う技術を使用するとよいのではないでしょうか?
> 私も不勉強でよくは知りませんが、DCOMだとサーバーのモジュールを動かすこと
> が出来ると
> 聞いたことがあります。

あたりまえのことですが、サーバマシン上のプログラムを動作させるには、
サーバマシン上でプログラムの起動を待機するしくみがなければなりません。

もっとも単純な方法としては、
サーバ上で NT サービス (UNIX でいうデーモンプロセス) を動かし、
ソケットや名前付きパイプでデータを待つ、という方法があります。
たとえば ftp や telnet なんかはこれで行います。
データストリームの授受が行われるのみですので、
通常独自のプロトコルを定義しなければなりません。

次にもう少し高度な方法として RPC (remote procedure call) があります。
これはリモートで動作させる手続きを idl という言語で記述し、
サーバ側の手続きの雛形とクライアント側の呼び出し口を自動生成させる
しかけです。したがって、ソケットなどを使うよりも一般的には簡単に
開発を行うことができます。

RPC の上にかぶせる形で一連の関係する手続きをオブジェクト単位に
管理しようとした試みが CORBA や DCOM です。これにより、
たとえば遠隔地にオブジェクトを構築し、そこにメッセージを送ることによって
仕事をさせることができるようになります。とりわけ DCOM の場合は
Visual C++ の MFC / ATL に慣れている開発者ならば簡単に
開発を行うことができます。
Re: VBで他アプリケーションの起動と終了をしたい
#631
Author: yuta
Date: Tue, 24 Feb 1998 00:00
32 lines
2518 bytes
"Kuniyoshi Mohri" <na201599@fsinet.or.jp> writes:

> >$B%/%i%$%"%s%H$N(BVB$B$+$i(BNT Server$B$K$"$k%b%8%e!<%k$r(B
> >NT$B>e$GF0:n$5$;$?$$$N$G$9$,!"$I$&$9$l$P$h$$$N$G$7$g$&$+!)(B
> $B$3$l$r$d$k$K$O!"#D#C#O#M$H$+8@$&5;=Q$r;HMQ$9$k$H$h$$$N$G$O$J$$$G$7$g$&$+!)(B
> $B;d$bITJY6/$G$h$/$OCN$j$^$;$s$,!"#D#C#O#M$@$H%5!<%P!<$N%b%8%e!<%k$rF0$+$9$3$H(B
> $B$,=PMh$k$H(B
> $BJ9$$$?$3$H$,$"$j$^$9!#(B

$B$"$?$j$^$($N$3$H$G$9$,!"%5!<%P%^%7%s>e$N%W%m%0%i%`$rF0:n$5$;$k$K$O!"(B
$B%5!<%P%^%7%s>e$G%W%m%0%i%`$N5/F0$rBT5!$9$k$7$/$_$,$J$1$l$P$J$j$^$;$s!#(B

$B$b$C$H$bC1=c$JJ}K!$H$7$F$O!"(B
$B%5!<%P>e$G(B NT $B%5!<%S%9(B (UNIX $B$G$$$&%G!<%b%s%W%m%;%9(B) $B$rF0$+$7!"(B
$B%=%1%C%H$dL>A0IU$-%Q%$%W$G%G!<%?$rBT$D!"$H$$$&J}K!$,$"$j$^$9!#(B
$B$?$H$($P(B ftp $B$d(B telnet $B$J$s$+$O$3$l$G9T$$$^$9!#(B
$B%G!<%?%9%H%j!<%`$N<x<u$,9T$o$l$k$N$_$G$9$N$G!"(B
$BDL>oFH<+$N%W%m%H%3%k$rDj5A$7$J$1$l$P$J$j$^$;$s!#(B

$B<!$K$b$&>/$79bEY$JJ}K!$H$7$F(B RPC (remote procedure call) $B$,$"$j$^$9!#(B
$B$3$l$O%j%b!<%H$GF0:n$5$;$k<jB3$-$r(B idl $B$H$$$&8@8l$G5-=R$7!"(B
$B%5!<%PB&$N<jB3$-$N?w7A$H%/%i%$%"%s%HB&$N8F$S=P$78}$r<+F0@8@.$5$;$k(B
$B$7$+$1$G$9!#$7$?$,$C$F!"%=%1%C%H$J$I$r;H$&$h$j$b0lHLE*$K$O4JC1$K(B
$B3+H/$r9T$&$3$H$,$G$-$^$9!#(B

RPC $B$N>e$K$+$V$;$k7A$G0lO"$N4X78$9$k<jB3$-$r%*%V%8%'%/%HC10L$K(B
$B4IM}$7$h$&$H$7$?;n$_$,(B CORBA $B$d(B DCOM $B$G$9!#$3$l$K$h$j!"(B
$B$?$H$($P1s3VCO$K%*%V%8%'%/%H$r9=C[$7!"$=$3$K%a%C%;!<%8$rAw$k$3$H$K$h$C$F(B
$B;E;v$r$5$;$k$3$H$,$G$-$k$h$&$K$J$j$^$9!#$H$j$o$1(B DCOM $B$N>l9g$O(B
Visual C++ $B$N(B MFC / ATL $B$K47$l$F$$$k3+H/<T$J$i$P4JC1$K(B
$B3+H/$r9T$&$3$H$,$G$-$^$9!#(B
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads