ソフトが起動しているかどうか

ActiveBasicでのプログラミングでわからないこと、困ったことなどがあったら、ここで質問してみましょう(質問を行う場合は、過去ログやWeb上であらかじめ問題を整理するようにしましょう☆)。
返信する
メッセージ
作成者
Mario2
記事: 205
登録日時: 2005年5月31日(火) 13:31
お住まい: 大阪市
連絡する:

ソフトが起動しているかどうか

#1 投稿記事 by Mario2 »

(トピックの件名)を確認するにはどうすればいいのでしょうか?

たとえば、(他に思いつかなかったので、例として)Winny.exeが起動している場合に、メッセージボックス(で警告)を出すには、どうすればいいのでしょうか?

(ちなみに、IEだと、クラス名が「IEFrame」(だったかな…)とはっきり分かっているので、また、タイトルが一定(レジストリ エディタ・電卓等)な物もFindWindowで取得できるので)

(ようするに、)クラス名が不明で、ソフトのタイトルが一定でない(タイトルの一部分は一定の)ソフトが起動しているかチェックをしたいのです。

一部おかしい文もあるのかもしれませんが、よろしくお願いします。
hira
記事: 203
登録日時: 2005年5月31日(火) 20:14
お住まい: 兵庫県
連絡する:

Re: ソフトが起動しているかどうか

#2 投稿記事 by hira »

EnumWindowでトップレベルのウィンドウを列挙し、ワイルドカードを使ってウィンドウのタイトルを比較すればいいのではないでしょうか。

とりあえずOar32.dllで使っているワイルドカードによる文字列比較の関数を置いておきます。

コード: 全て選択

Declare Function CharNext Lib "user32" Alias "CharNextA" (lpszCurrent As BytePtr) As BytePtr

Function StrMatch(ptn As BytePtr,str As BytePtr) As Long
	Select Case ptn[0]
		Case 0
			StrMatch=(str[0]=0)
		Case Asc("*")
			StrMatch=StrMatch(CharNext(ptn),str)
			If str[0] Then StrMatch=StrMatch Or StrMatch(ptn,CharNext(str))
		Case Asc("?")
			StrMatch=(str[0]<>0) And StrMatch(CharNext(ptn),CharNext(str))
		Case Else
			StrMatch=(memcmp(ptn,str,IsDBCSLeadByte(ptn[0])+1)=0) And StrMatch(CharNext(ptn),CharNext(str))
	End Select
End Function
第1引数がワイルドカードを使ったパターン文字列、第2引数が比較対象の文字列です。
戻り値は正しければ0以外、正しくなければ0となります。
なお、? 記号(今回は使うことがないかもしれませんが)は2バイト文字も表すことができます。
※StrMatch("テ?ト","テスト") <> 0 となります

EnumWindowのコードはお決まり(?)なのでここでは省略します(検索して調べてみてください)。
Mario2
記事: 205
登録日時: 2005年5月31日(火) 13:31
お住まい: 大阪市
連絡する:

Re: ソフトが起動しているかどうか

#3 投稿記事 by Mario2 »

hiraさん、サンプル?ありがとうございます。
このコードを参考にがんばってみます。
Tomorrow
記事: 72
登録日時: 2005年6月04日(土) 10:09

Re: ソフトが起動しているかどうか

#4 投稿記事 by Tomorrow »

解決済み? かも知れないですが、
起動中のプロセスを列挙する方法ではどうでしょうか。

http://support.microsoft.com/default.as ... ;ja;175030
http://www.google.co.jp/search?sourceid ... 9%E6%B3%95
Mario2
記事: 205
登録日時: 2005年5月31日(火) 13:31
お住まい: 大阪市
連絡する:

Re: ソフトが起動しているかどうか

#5 投稿記事 by Mario2 »

> 解決済み? かも知れないですが、
> 起動中のプロセスを列挙する方法ではどうでしょうか。
>
> http://support.microsoft.com/default.as ... ;ja;175030
> http://www.google.co.jp/search?sourceid ... 9%E6%B3%95

Tomorrowさん、回答ありがとうございます。
解決済みでした(笑)が、こちらも参考にさせてもらいます。
返信する