Windows APIのSendMessage()を使用して、RichTextBox内のテキストを検索するプログラムを作成しているのですが、Windowsを起動してからプログラムを起動して検索を行うと、検索文字列が存在するにも関わらず、戻り値が-1で返ってきてしまいます。
しかし、しばらくすると何故か正常に検索されるようになります。Windowsを再起動して、また検索しても検索は上手く行きません。
原因がわからず困り果てています・・・。
以下は検索処理の抜粋です。
lngTextFindEx = FR_DOWN Or FR_MATCHCASE
With udtFindTextEx
With .chrg
.cpMin = 0 'テキストの先頭から
.cpMax = -1 '最後尾まで検索
End With
'''''検索する文字列の指定
.lpstrText = strKey(i)
End With
lngFindPos = SendMessage(lngHWnd, EM_FINDTEXTEX, lngTextFindEx, udtFindTextEx)
環境は以下です。
OS:Windows XP Professional SP2
VB6
原因はわかりませんが、困り果てているなら、
InStr又はInStrRevで検索しても、それ程処理時間は
変わらないと思いますが。
常駐していた不要なアプリケーションを削除したところ、Windows起動直後も検索処理は正常に動作するようになりました…。
根本的な解決ではないですが、ひとまず自己解決ということにします。
>ねろさん
検索範囲と、検索対象の量が膨大な為、少しでも早い処理で進めたいと思っています。
ありがとうございました。
ツイート | ![]() |