tagCANDY CGI VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板 [ツリー表示へ]   [Home]
一括表示(VB6.0)
タイトル転送データが表示されない理由につきまして
記事No11106
投稿日: 2008/01/11(Fri) 08:58
投稿者sinkai
Office Wordではテキスト画面に転送データ"test"が表示されません。
他のウインドウテキスト画面では問題なく転送データ"test"が表示できています。
( Windows XP : VB6 )
      'WM_SETTEXT &HC ウインドウのテキストを変更
Ret = SendMessage(ChildhWnd, &HC, 0, ByVal "test")
            Ret は”1”に変化しますのでデータは転送された
      ものと思っていますが転送データが表示されません。

Microsoft Office Word 2003のテキスト画面のハンドル・・・ChildhWnd
転送データ・・・"test"
キャプション・・・ Microsoft Word 文書
クラス・・・ _WwG

Microsoft Office Wordではテキスト画面に転送データ"test"が
表示されない理由としてどのような事が考えられますでしょうか。
ご教授よろしくお願いします。

[ツリー表示へ]
タイトルRe: 転送データが表示されない理由につきまして
記事No11109
投稿日: 2008/01/11(Fri) 14:08
投稿者花ちゃん
> キャプション・・・ Microsoft Word 文書
> クラス・・・ _WwG

Microsoft Office Word のタイトルバーのキャプションテキストを書き変えたいの
ですよね。

Word のクラス名は、"OpusApp" じゃなかったかな。

どのようなコードを書いておられるのでしょうか?
私が試した限りでは、キチンと書き変わりましたよ。

[ツリー表示へ]
タイトルRe^2: 転送データが表示されない理由につきまして
記事No11110
投稿日: 2008/01/11(Fri) 15:22
投稿者sinkai
花ちゃん さん

返答をして頂きましてありがとうございました。お礼を申し上げます。

>どのようなコードを書いておられるのでしょうか?
下記の一行だけの記述です。
      '_WwGのハンドル(ChildhWnd)
Ret = SendMessage(ChildhWnd, &HC, 0, ByVal "test")  '一行
>Word のクラス名は、"OpusApp" じゃなかったかな。
はい、Word の親ウインドウのクラス名は、"OpusApp"です。
メモ帳のEditに相当するクラス部分が_WwGのハンドル(ChildhWnd)
と思い考えました。

備考

・メモ帳の場合

親ウインドウのハンドル(hWnd)
タイトル・・・無題 - メモ帳
キャプション・・・FolderView
クラス・・・Notepad

Ret = SendMessage(hWnd, &HC, 0, ByVal "test")

"test"が転送できませんでした。

Editのハンドル(ChildhWnd)
Ret = SendMessage(ChildhWnd, &HC, 0, ByVal "test")

"test"が転送できました。

・Microsoft Office Word 2003の場合

親ウインドウのハンドル(hWnd)
タイトル・・・文書 1 - Microsoft Word
キャプション・・・FolderView
クラス・・・OpusApp
OpusAppのハンドル(hWnd)= 親ウインドウ

Ret = SendMessage(hWnd, &HC, 0, ByVal "test")

"test"が転送できませんでした。

_WwGのハンドル(ChildhWnd)

Ret = SendMessage(ChildhWnd, &HC, 0, ByVal "test")

"test"が転送できませんでした。

長くなりまして申し訳ありませんでした。

[ツリー表示へ]
タイトルRe^3: 転送データが表示されない理由につきまして
記事No11116
投稿日: 2008/01/11(Fri) 17:04
投稿者花ちゃん
> >どのようなコードを書いておられるのでしょうか?
> 下記の一行だけの記述です。
>       '_WwGのハンドル(ChildhWnd)

この1行だけなら動かないでしょうが?
Word のハンドルを取得している部分やアクティブにする部分も必要でしょう。

タイトルを書き変えたいのですか?
それともWordの文書を書きたいのですか?
こちらの質問に答えて下さい。

実際に使っているコードを投稿しないとどこがまずいのか解らないでしょうが。

[ツリー表示へ]
タイトル前質問リンク
記事No11117
投稿日: 2008/01/11(Fri) 18:26
投稿者るしぇ
もともと MOUG で FindWindow 関係の回答を貰ってて、
http://www2.moug.net/bbs/program/20080109000004.htm
今回の質問文と同じ質問をして、回答がつきませんでした。

具体的な解決報告がない上に、正しくハンドルが取得できているか
確認できない質問文なのだから、当然なんだけど、
>>どのようなコードを書いておられるのでしょうか?
>下記の一行だけの記述です。
>      '_WwGのハンドル(ChildhWnd)
>Ret = SendMessage(ChildhWnd, &HC, 0, ByVal "test")  '一行
そのような認識だったとは。。。

なんか。。。ある意味納得してしまいました。。。
質問者が使っていそうなコードの参考のためリンクしておきます。

[ツリー表示へ]
タイトルRe^4: 転送データが表示されない理由につきまして
記事No11118
投稿日: 2008/01/11(Fri) 18:28
投稿者sinkai
花ちゃん さん

度々、申し訳ありませんでした。

>Word のハンドルを取得している部分やアクティブにする部分も必要でしょう。
特に親ウインドウのハンドル、アクティブしないで転送できました。
メモ帳、ワードパット、その他で転送確認もできています。
>タイトルを書き変えたいのですか?
>それともWordの文書を書きたいのですか?
はい、Wordの文書を書きたいです。
Word以外では文書の転送で書き換えができています。

メモ帳にデータが転送"test"できましたので下記に記述しました。
ChildhWndのハンドルを変更するだけでワードパットでも確認できました。

メモ帳・・・クラス名Editのハンドル(ChildhWnd)
'------------------------------------------------------------------------
'
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
    (ByVal hWnd As Long, _
    ByVal wMsg As Long, _
    ByVal wParam As Long, _
    lParam As Any) As Long
Private Sub Form_Load()

Ret = SendMessage(ChildhWnd, &HC, 0, ByVal "test")

End Sub

'------------------------------------------------------------------------
'
コードの事を記述と思っていましたが、もし謝っていましたら大変申し訳ありませんでした。

[ツリー表示へ]
タイトルRe^5: 転送データが表示されない理由につきまして
記事No11119
投稿日: 2008/01/11(Fri) 18:38
投稿者るしぇ
。。。で?肝心の Word のハンドルを正しく取得できているか
どうかをこちらが判断したいときは、どこを見ればいいの?

[ツリー表示へ]
タイトルRe^6: 転送データが表示されない理由につきまして
記事No11120
投稿日: 2008/01/11(Fri) 19:03
投稿者sinkai
るしぇ さん

返答して頂きましてありがとうございました。
Microsoft Office Word 2003につきましては同じですが親ウインドウの取得の質問でした。
FindWindow等によるアドバイスをして頂き感じが分かりましたので解決としました。
今回の Office Wordにつきましては同じですが具体的なデータ転送表示についてでしたので
マルチポストにはあたらないものと思い投稿しました。マルチポストにつきましては
特に注意していますが、今回の投稿がマルチポストにあたりましたら
大変申し訳ないことをしてご迷惑をお掛けしました。

[ツリー表示へ]
タイトルRe^7: 転送データが表示されない理由につきまして
記事No11121
投稿日: 2008/01/12(Sat) 07:34
投稿者花ちゃん
マルチポスト云々より、それ以前の問題で、一番肝心な何がしたいのかを答えないし
コードを投稿して下さいと何度も言ってもクイズのヒントでもあるまいに中途半端な
コードを投稿して、肝心な部分のコードが投稿されないし、人の質問には答えないし

1.何がやりたいのかをキチンと説明して下さい。
 (Word のタイトルバーのキャプションタイトルを書き換えたいとか)
 場合によっては、質問された方法と違う方法をとる必要があるかも知れませんので


2.上記を実現するために貴方が書いたコードを(Form1 に書いてあるコード)全て投稿
 して下さい。

このサイトをご利用されるなら、メニューの上部に書いてある「初めにお読み下さい」
をよく読んでからご利用願います。

[ツリー表示へ]
タイトルRe^8: 転送データが表示されない理由につきまして
記事No11122
投稿日: 2008/01/12(Sat) 10:06
投稿者sinkai
花ちゃん さん

>コードを投稿して、肝心な部分のコードが投稿されないし
>クイズのヒントでもあるまいに中途半端な
>貴方が書いたコードを(Form1 に書いてあるコード)全て投稿
>肝心な部分のコードが投稿されないし、人の質問には答えないし
親 のハンドルやアクティブにする必要もなく肝心な部分は
下記の一行だけで動作確認できますので今回の投稿になりました。
Ret = SendMessage(ChildhWnd, &HC, 0, ByVal "test")
けしてクイズのヒントのつもりで書いて投稿しているつもりではしていません。
投稿では転送データは"test"にしていますが実際は"test"の所、ChildhWnd部分を変えて
動作確認だけの為に一行で行っています。
初めから下記の様に投稿しておけばと反省はしています。
'------------------------------------------------------------------------
'
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
    (ByVal hWnd As Long, _
    ByVal wMsg As Long, _
    ByVal wParam As Long, _
    lParam As Any) As Long
Private Sub Form_Load()

Ret = SendMessage(ChildhWnd, &HC, 0, ByVal "test")

End Sub

'------------------------------------------------------------------------
'
いろいろとお世話になりありがとう御座いました。

[ツリー表示へ]
タイトル質問に答えられないなら回答できません
記事No11123
投稿日: 2008/01/12(Sat) 11:46
投稿者花ちゃん

> Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
>     (ByVal hWnd As Long, _
>     ByVal wMsg As Long, _
>     ByVal wParam As Long, _
>     lParam As Any) As Long
> Private Sub Form_Load()
>
> Ret = SendMessage(ChildhWnd, &HC, 0, ByVal "test")
>
> End Sub
>

何回同じ事を言えばいいのですか?
それでは動作しないでしょうが。
実際に使っているコードを全て投稿して下さい。
変数の宣言やハンドルの取得はどこでしているのですか?

[ツリー表示へ]
タイトルRe: 質問に答えられないなら回答できません
記事No11124
投稿日: 2008/01/12(Sat) 12:59
投稿者sinkai
spy++ ではありませんがハンドルを調べるソフトから
メモ帳でクラス名EditのハンドルをChildhWnd部分にして転送できています。
>何回同じ事を言えばいいのですか?
>それでは動作しないでしょうが。
親 のハンドルやアクティブに設定する必要なく動作するコードもあるのがと
思いましたが何度も確認していますがメモ帳で間違いなく動作しています。
動作確認でWordだけが転送表示になりませんでしたので
なぜ転送データが表示されないについて知りたくて投稿しました。

1.Microsoft Visual Basic 6.0の起動
2.標準 EXE
3.開く
4.Form1とEnd Subの中にRet = SendMessage(ChildhWnd, &HC, 0, ByVal "test")

Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
    (ByVal hWnd As Long, _
    ByVal wMsg As Long, _
    ByVal wParam As Long, _
    lParam As Any) As Long
Private Sub Form_Load()

Ret = SendMessage(ChildhWnd, &HC, 0, ByVal "test")

End Sub

[ツリー表示へ]
タイトル回答ではありません。
記事No11125
投稿日: 2008/01/12(Sat) 14:31
投稿者しんご
るしぇさん、花ちゃんさんからの質問に対する答えを
書けばいいのに、なぜに書かないのかが疑問。回答できないのも当然。

で、Wordに文字列を転送するプログラムを私もトライしてみました。
ネット検索で資料集めて、適当にプログラム組んだら簡単にできましたけど・・・

これってそんなに難しい問題ですか?

[ツリー表示へ]
タイトルRe^2: 質問に答えられないなら回答できません
記事No11130
投稿日: 2008/01/14(Mon) 02:57
投稿者るしぇ
まず、ボクのリンクはマルチポストの指摘ではありません。
向こうで削除されていることも確認してます。
また、マルチポストの指摘であれば、そうハッキリ書きます。
このサイトの『初めにお読み下さい』ページのリンクも貼ります。

> spy++ ではありませんがハンドルを調べるソフトから
> メモ帳でクラス名EditのハンドルをChildhWnd部分にして転送できています。
分かりました。しかし、実際にこちらの環境と結果が違うわけですから、
そのコードも含めてこちらの環境で検証する必要があるわけです。

ChildhWnd の取得部分も含めて、提示したコードのみでテストできる
サンプルコード(ミニマムコード)をお願いします。

[ツリー表示へ]