HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2012
0425
杉村祐介ネット上のサンプルを改変した場合の著作権6解決


杉村祐介

リンク

2012/4/25(Wed) 06:11:45|NO.46260

著作権についての質問になるのですが……。

http://hspnext.com/hspkura/hspkura04.htm#contents09
http://tkooler.moe.hm/hsp/bbslog/get/625.html

先日、上記サイトに乗っていたスクリプトを自分なりにアレンジして、
PrtScを便利にするプログラムを組みました。


ただ、これを実行ファイル,zipにして公開したいと思うのですが
著作権の問題がからむと心配になってます。

さくら様のHSP-NEXTには、HSPサンプル蔵についてというページで
「著作権は放棄されていないので、
 公開する場合は引用部分を明記してください」
との記述を見つけたので、
readmeに記述する予定ではあるのですが、
なたで様のスクリプトについては
掲示板の書き込みログのようなので、
著作権を放棄されているかわかりませんでした……。

こういった場合、公開は避けた方がいいのでしょうか?
ご回答、どうぞ宜しくお願いします。



この記事に返信する


check

リンク

2012/4/25(Wed) 09:18:11|NO.46264

なたで氏のスクリプトそのものはなたで氏に著作権があり、改造して配布するのは微妙なところだが、
スクリプト自身で行われていること自体は消して難しいことではないので、
氏がそれを理解した上で、様は使われているWindowsAPIを理解した上で
あらためて自分で(その部分の)スクリプトを組んでみるのが一番じゃないだろうか。



杉村祐介

リンク

2012/4/25(Wed) 14:00:00|NO.46265

checkさん、回答ありがとうございます。


それを受けてスクリプトの解読をがんばってみたのですが、
どうしてもわからない場所があるのですが……。


; ;_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/ ; ;PrtSc_Saver……☆自作改変Ver☆ ; 2012_04/?? ; ;参考URL ;http://tkooler.moe.hm/hsp/bbslog/get/625.html ;http://hspnext.com/hspkura/hspkura04.htm ; ;_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/ ; ; ; #packopt name "PrtSc_Saver"; 実行ファイル名指定 ; ; ; #module; クリップボード操作命令の指定 ; #uselib "user32.dll"; Win32_API呼び出し ;Win32_APIはWindowsに標準搭載のさまざまな能力を持つDLL。 #func OpenCB "OpenClipboard" int; クリップボードを開き、他のプログラムで更新できないようにする。 ;使用例) OpenCB hwnd……クリップボードを開く。 #func CloseCB "CloseClipboard"; クリップボードを閉じる。↑の対になるプログラム。 ;使用例) CloseCB……クリップボードを閉じる。 #cfunc IsCBFormatAvailable "IsClipboardFormatAvailable" int; クリップボードのデータが特定種であるかを調べる。 ;使用例) buf=IsCBFormatAvailable(CF_BITMAP)……BMPである場合は1が、それ以外なら0が返る。 #cfunc GetCBData "GetClipboardData" int; クリップボードにある特定種のデータを取得する。 ;使用例) buf=getcbdata(CF_BITMAP)……BMPである場合はそのデータが、それ以外なら0が返る。 #func ReleaseDC "ReleaseDC" int,int; デバイスコンテキストを解放し、他のアプリケーションからつかえるようにします。(コピペですorz ; ; #uselib "gdi32.dll" #func GetObjectA "GetObjectA" int,int,int; オブジェクトのデータを取得?(解読不能orz ;使用例) ;dim buf,16; BMPの構造体を保存する変数を初期化。 ;OpenClipboard hwnd; クリップボード解放。 ;Bitmap=GetCBData(CF_BITMAP); クリップボードのないようがBMPならば変数に保存。 ;GetObjectA Bitmap,32,varptr(buf)//(BITMAP 構造体); GetObjectAにより、変数にデータ保存。 ;CloseClipboard; クリップボード閉じる ;mes ""+buf(1)+"/"+buf(2); buf(1)=xサイズ、buf(2)=yサイズ。他の配列にはさまざまなデータが保存されている模様……。 #cfunc CreateCompatibleDC "CreateCompatibleDC" int; 指定されたデバイスと互換性のあるメモリデバイスコンテキストを作成します(コピペですorz ;使用例)bitmaps=CreateCompatibleDC(hdc)……変数にデータを保存。 #func BitBlt "BitBlt" int,int,int,int,int,int,int,int,int; コピー元からコピー先のデバイスへ指定された長方形内の色データをコピーする。 ;使用例) ;dim buf,32 ;GetObjectA BMPdata,32,buf ;BB hdc,0,0,buf(1),buf(2),hdc_mem,0,0,$00CC0020 ;参考……BMPdata=BMPのデータをコピーした変数、hdc=現在のウィンドウハンドル、xサイズ=buf(1)、yサイズ=buf(2) ;bufはデータロード直前にdimで初期化しておくと良い。 #func DeleteDC "DeleteDC" int; 指定されたデバイスコンテキストを削除します。(コピペですorz ; #define CF_BITMAP $00000002 #define CF_OEMTEXT $00000007 #define GMEM_MOVEABLE 2 ; ; #deffunc GetCBIMG; クリップボードの画像を保存する。 type=IsCBFormatAvailable(CF_BITMAP); BMPであるかどうか調べる。 if type=0:return -1; 変数statに-1を返す(「エラー:BMP以外のファイル」の意味) if type{ OpenCB hwnd; クリップボードを開く。 Bitmap=GetCBData(CF_BITMAP); クリップボードからBMPデータを取得(↑のIs~でBMP判定が終わっているのでエラーはでないはず……) if Bitmap=0:return -2; 変数statに-2を返す(「エラー:BMPデータのサイズが0」の意味?)解読不能orz Bitmaps=CreateCompatibleDC(hdc) if bitmaps=0 : return -3 dim buf,84; 構造体を保存する変数を初期化。 GetObjectA Bitmap,84,varptr(buf); 構造体を入力。 BitBlt hdc,0,0,buf(1),buf(2),Bitmaps,0,0,$00CC0020; BMPを画面に描写 DeleteDC Bitmaps; Bitmapsのデータを削除。 ReleaseDC hwnd,hdc; データを開放? CloseCB; クリップボードを閉じる。 return 0; 変数statに0を返す(「成功」の意味) } ; #deffunc GetCBIMGX; クリップボードのXサイズ取得 type=IsCBFormatAvailable(CF_BITMAP); BMPであるかどうか調べる。 if type=0:return -1; 変数statに-1を返す(「エラー:BMP以外のファイル」の意味) if type{ OpenCB hwnd; クリップボードを開く。 Bitmap=GetCBData(CF_BITMAP); クリップボードからBMPデータを取得(↑のIs~でBMP判定が終わっているのでエラーはでないはず……) if Bitmap=0:return -2; 変数statに-2を返す(「エラー:BMPデータのサイズが0」の意味?)解読不能orz dim buf,32; 構造体を保存する変数を初期化。 GetObjectA Bitmap,32,varptr(buf); 構造体を入力。 CloseCB; クリップボードを閉じる。 return buf(1); 変数statにbuf(1)を返す(「成功:xサイズが返る」の意味) } #deffunc GetCBIMGY; クリップボードのXサイズ取得 type=IsCBFormatAvailable(CF_BITMAP); BMPであるかどうか調べる。 if type=0:return -1; 変数statに-1を返す(「エラー:BMP以外のファイル」の意味) if typ{ OpenCB hwnd; クリップボードを開く。 Bitmap=GetCBData(CF_BITMAP); クリップボードからBMPデータを取得(↑のIs~でBMP判定が終わっているのでエラーはでないはず……) if Bitmap=0:return -2; 変数statに-2を返す(「エラー:BMPデータのサイズが0」の意味?)解読不能orz dim buf,32; 構造体を保存する変数を初期化。 GetObjectA Bitmap,32,varptr(buf); 構造体を入力。 CloseCB; クリップボードを閉じる。 return buf(2); 変数statにbuf(2)を返す(「成功:yサイズが返る」の意味) } ; #global ; ; ; ; *main buffer 1,ginfo_dispx,ginfo_dispy; サブウィンドウ生成 screen 0,128,64,8; メインウィンドウ再生成 gsel 0,2; ウィンドウが背面へ行かないよう指定 title "PrtSc_Save.exe"; タイトル変更 objsize 128,64; ボタンサイズ変更 button gosub "SAVE",*save; ボタン配置 chdir dirinfo(0x10000); デスクトップ指定 stop; プログラム一時停止 ;*ボタンが押されたときに*saveフラグへ移動するので大丈夫。 ; *save gsel 1 ; GetCBIMGX:x=stat; Xサイズを取得 ; GetCBIMGY:y=stat; Yサイズを取得 ; buffer 1,x,y; クリップボードの画像Xサイズ、Yサイズでウィンドウ初期化。 ; if (x<0)or(y<0):return; エラー:画像データ以外のデータ。 GetCBIMG; 画像をウィンドウID1に保存。 if stat<0:dialog "エラー:画像を保存できませんでした。"+stat:return bmpsave "PrtSc_"+gettime(0)+gettime(1)+gettime(3)+"_"+gettime(4)+gettime(5)+gettime(6)+".bmp"; BMPとして保存。 return


コメントの付いている行は理解したのですが
どうしてもBitBltが機能していないようで……
あとは、GetCBIMGX、GetCBIMGYを実行しても
画像が保存できないのです。

ヒントだけでも良いので
どなたかアドバイスいただけないでしょうか?



check

リンク

2012/4/25(Wed) 15:22:26|NO.46266

まず、xサイズyサイズを別々に取得している今のコードは効率が悪い。
一回クリップボードから画像データを取得すれば、xサイズyサイズも取得できているのは分かっているだろうから、
戻り値(stat)を利用するのではなくて、パラメータにx,yサイズを受け取る仕様に直せばいい。

そして、氏の >GetCBIMGX、GetCBIMGYを実行しても画像が保存できないのです。
というのは意味が分からない。画像のサイズを取得するはずの命令で、画像を保存させたいということだろうか?

Bitbltが正しく働かないのはSelectObject(Bitmaps, Bitmap)をBitBltの前あたりに、
DeleteObject(Bitmap)を後ろあたりに置けば直るんじゃないかな。たぶん。



なたで

リンク

2012/4/25(Wed) 21:45:53|NO.46269

こんにちは。なたでです。

連絡先が分かる場合は
メールとかで聞いてみるのも手ですよ。
(NO.664のはアドレスを書き忘れましたが。すみません。)

あと、どうしても連絡できない場合は、
ソースコードを理解して、
自分で書き直せばいいと思います。

私がこの掲示板などで書き込んだコードは、
サイトでまとめているので、
どうぞ好きに使ってください!(^^)
http://www.placeark.com/program_hsp_sample.html



杉村祐介

リンク

2012/4/26(Thu) 09:53:18|NO.46273

お二人とも回答ありがとうございます。

>GetCBIMGX、GetCBIMGYを実行しても画像が保存できない
↑に関しては打ち間違いです。
実行しても「x,yの変数が」保存できないという意味でした。
また、x,yと分けて記述したのは
モジュール空間からグローバル空間への変数受け渡しが理解できず
それに時間を割くのももったいないと思ったからです。
(変数@でモジュール空間に渡せることをさっき調べて理解しました。

なたでさん
サンプル提示してくださってありがとうございます!
他にも気になるサンプルがたくさん……
今回のプログラムは
自身の勉強のために、参考として見させていただきます。


早速スクリプト編集してきます!



杉村祐介

リンク

2012/4/26(Thu) 15:59:45|NO.46274

無事、思い通りの機能を作ることができました。
お二方どうもありがとうございましたm(_ _;)m



ONION software Copyright 1997-2023(c) All rights reserved.