したらばTOP ■掲示板に戻る■ 全部 1-100 最新50 | |

同じ現象になりますか。

1アラキ:2004/01/29(木) 20:47
お世話になります。
アラキと申します。

下記の様な同じ現象になりますか。
ソフトの続API -クリップボードのビットマップをファイル化-.bas
は詳細な説明付きで大変参考になり,あまり詳しくない自分にも理解
する事がでたと思っています。ありがとうございました。
下記の点で確認していただければと思います。
続API -クリップボード・・・の使用に於いて
Windows2000でクリックボードを開いた状態で
PrtScキーを押しますと続行不可能なエラーが発生します。
262行 API_MOVEMEMORY LPBITMAPINFOHEADER ,です。
Windows98では問題なく動作しています。
同じ様な現象になるか確認できればと思っています。
よろしくお願いいたします。

2F橋:2004/01/30(金) 20:59
全然関係ないかも知れませんが…

私がAPI関連でエラーになるときに調べると(私はですが)いつもメモリの確保のミスとかばかりでした
また一部は文字列を固定長で宣言するとうまく行く事もあるようでしたです

全く関係ないかも知れませんが一度ご確認下さいませです
(知らないのにレスしてしまいすんませんです)

3アラキ:2004/01/31(土) 00:28
レスをして頂きましてありがとうございました。
自分も原因は、良く解りませんので情報を提供していただけた事で助かりました。
今回何となく解った事は同じソフトでもWindows98、2000、XP
それぞれ微妙に違いが有ることが解りました。微妙でも全く動作しなくなります。
ソフトにもよると思いますが全てのOSが動作するようにするも大変な作業だと
今回感じました。

4アラキ:2004/01/31(土) 02:18
一応目的が達成できました。
エラーの所を外して見ましたらエラーは出なくなりました。
自作ソフトでは特に影響が見あたりませんでしたので一応問題無しとしました。
話は変わりますが、F橋さんが投稿の中でF-BASIC使用にはWin98が一番安定していると述べられていました。
今回、自分もそう思いました。Win2000でF-BASICのリストをマウス・スクロール時、遅くなったり
する事が有ります。Win98ではありませんでした。考えて見ますとWin2000は後で追加されました。
アップデートの必要が有ることから、F-BASIC6.3はWin98で十分テストしていたものと推測されます。
その為、安定しているのかと思っています。

お世話になりました。ありがとうございました。

5nisii:2004/02/02(月) 19:30
>>4
Windows2000のクリップブックを開いておき、サンプルプログラムを実行するとエラーが起きるのですか?
念のため、変数や構造体、定数の宣言に抜けが無いか確認してください。
クリップブックを開いていても、当方のWindows2000Pro環境でエラーは起きませんでした。

問題の個所は、下の部分でしょうか?

' DIBから BITMAPINFOHEADER構造体をコピーする(変数取得用)
API_MOVEMEMORY LPBITMAPINFOHEADER , byval HDIBADR , len( LPBITMAPINFOHEADER )

DIBの情報を得るのに使っていますから、これが無いと正しいビットマップファイルが得られない可能性が高いのですけど…。
下は、クリップボードへの連続アクセスを避ける代案です。

' コピーしたDIBから BITMAPINFOHEADER構造体をコピーする(変数取得用)
API_MOVEMEMORY LPBITMAPINFOHEADER , stradr( BIPIXELDATA$ ) , len( LPBITMAPINFOHEADER )

6アラキ:2004/02/05(木) 19:45
ご投稿、ありがとうございました。
一台のパソコンでWin98とWin2000の入れ替えでしたのでので、少し遅くなりました。
Windows2000は今回初めて使用しましたので、まだよく理解していません。
エラーが発生したのはWindows2000インストールを上書で行いました。

' DIBから BITMAPINFOHEADER構造体をコピーする(変数取得用)
API_MOVEMEMORY LPBITMAPINFOHEADER , byval HDIBADR , len( LPBITMAPINFOHEADER )の場所で間違いありません。

続API -クリップボードのビットマップ・・のファイル名をそのままの長い名前ですとWin98でも『続APIが見つかりません』が表示されますのでファイル名を続.BASに変更しました)

今度は
Windows2000インストールを新規作成してみました。
1. Microsoft Windows2000  Professional  クリップブック(C:\WINNT\SYSTEM32\CLIPBRD.EXE)
2. Microsoft Windows  クリックボードビューア(C:\WINDOWS\CLIPBRD.EXE)
二通りの選択になりました。

1. Microsoft Windows2000  Professional ではクリップブックを開いた状態でもエラーは発生しませんでした。又、そのままの長い名前でもエラーにならず問題なく使用できました。


2. Microsoft Windows ファイル名をそのままの長い名前ですと『続APIが見つかりません』が表示されますのでファイル名を続.BASに変更しました。クリックボードビューアを開いた状態でもエラーは発生しませんでした。

以上の事から、まだWin2000は理解していませんのでパソコンの使い方(インストール選択)に問題が有るのでしょうか。?

再度、Windows2000インストールを上書で再度確認します。その結果を、ご報告致しますのでしばらくお待ち下さい。

その他の疑問点
1.同じ実行ファイルCLIPBRD.EXEでクリップブック、クリップボードで名前が違うのはなぜなのでしょうか。又、共通の呼び名は有るのでしょうか。

2. Microsoft WindowsはWin98と同じようなので引継と思われますがこれもWindows2000と考えて良いのでしょうか。

低疑問の質問で有りますが、よろしくお願い致します。

7アラキ:2004/02/05(木) 22:26
追記
申し訳有りませんでした。
1. Microsoft Windows2000  Professional  クリップブック(C:\WINNT\SYSTEM32\CLIPBRD.EXE)で
まだ、良く解っていませんでしたのでクリップブック−[ローカル クリップブック]でおこなっていました。
それをクリップブック−[クリップボード]にしましたらエラーが発生しました。
' コピーしたDIBから BITMAPINFOHEADER構造体をコピーする(変数取得用)
API_MOVEMEMORY LPBITMAPINFOHEADER , stradr( BIPIXELDATA$ ) , len( LPBITMAPINFOHEADER )
に入れ替えて見ましたら一度、エラーは無くなりましたが、その後下記でエラー75になりました。
' 32bitビットマップから24bitビットマップファイルに変換する
BITMAP1.LOADFILE SRCBMPFILE$・・・・・エラー75
クリップブック−[クリップボード]を開いても良いときも有ります。
自分のパソコンに発生する問題なのでしょうか。
また、クリップブックの起動後は必ず[ローカル クリップブック]にります。
[クリップボード]を優先にする事は可能なのでしょうか。
ご指導を、よろしくお願い致します。

8アラキ:2004/02/06(金) 00:21
お世話になります。

クリップブック>クリップボード> hChildにクリップボードのハンドル取得と思って記述しましたが
ハンドルの取得ができません。
記述に何か間違がありましたら教えて頂けませんでしょうか。
よろしくお願いいたします。

HWND& = WINAPI_FINDWINDOW( byval 0 , "クリップブック" )
if HWND& <> 0 then
hChild = WINAPI_FindWindowEx(HWND&, 0, "CVchild", "クリップボード")



END IF

9アラキ:2004/02/06(金) 06:37
追記

Windows2000でのデスクトップのパスは
C:\Documents and Settings\既定\デスクトップ
です。他のソフトもこのデスクトップのパスで実行しますと
動作しないものがでてきました。
ソフトをDocuments and Settingsに移動して実行でも動作しませんでした。
C:\Windows\デスクトップで実行しますと問題ありませんでした。
Windows2000はよく解りませんが、Documents and Settingsのパス
を通しての利用の仕方は良くないのでしょうか。?

10nisii:2004/02/06(金) 19:20
>>7
エラー[75]→アクセスが拒否されました。
ビットマップファイルが正しく作成されていないのでしょう。

表面に現れるエラーではなく、それを引き起こした原因を探すようにしてください。
申し訳ないのですが、あらゆる使われ方・環境・エラーを想定したリストにするのは困難です。

クリップブックと競合しているかもしれません。
下記のように、自ウィンドウでオープンと明示すれば解決できませんか?
あるいは、少しの時間、クリップブックの処理を待ってからオープンするとか…。

' クリップボードをオープンする
RC = API_OPENCLIPBOARD( 0 )

RC = API_OPENCLIPBOARD( GETHWND )


>>8
>hChild = WINAPI_FindWindowEx(HWND&, 0, "CVchild", "クリップボード")

詳細は調べていませんが、クラス名とキャプション(タイトル)は正しいですか?
この掲示板トップにAPIサンプル「ウィンドウの列挙とモジュール名の取得」があります。
試しにウィンドウを列挙してみてください。


>>9
実行ファイル名はDOS互換にしましょう。Windows自体もそうしていますよね。
ディレクトリは8階層以内、半角英数8.3文字、パス長は最大64字。

また、スペースを複数パスの区切りにしていませんか?
スペースを含むパスをシステムから受け取った場合、前後が""で括られている可能性もあります。

11アラキ:2004/02/07(土) 04:51
WIN98では問題ありませんでした。私事ですがWINDOWS2000で自作ソフトを
C:\Documents and Settings\ユーザ\デスクトップにフォルダーを
設置してソフトの起動をしますとソフトによっては正常な動作にならない場合があります。
しかしDocuments andSettingsをさけますと正常な動作になります。
WINDOWS2000ではデスクトップに直接フォルダー・実行ファイルの設置をさけた
使い方でないと駄目なのかと考えています。

大変、お世話になりました。お礼を申し上げます。

12アラキ:2004/02/07(土) 05:05
お陰様でクリップボードのハンドル取得が取得できました。

HWND& = WINAPI_FindWindow(byval 0 , "クリップブック" )
if HWND& <> 0 then
hMDI = WINAPI_FindWindowEx( HWND&, 0, "MDIClient", "" ) ’子供

if HMDI <> 0 then
hChild = WINAPI_FindWindowEx(HMDI, 0, "CVchild", "クリップボード") '孫になる

お世話になりました。


新着レスの表示


名前: E-mail(省略可)

※書き込む際の注意事項はこちら

※画像アップローダーはこちら

(画像を表示できるのは「画像リンクのサムネイル表示」がオンの掲示板に限ります)

掲示板管理者へ連絡 無料レンタル掲示板