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


HSPTV!掲示板


未解決 解決 停止 削除要請

2020
0323
HSP 初心者HSPからドラックして別のソフトに(AviUtlと連動)7解決


HSP 初心者

リンク

2020/3/23(Mon) 12:13:48|NO.89796

最近、AviUtlで編集していてゆくサクというソフトを見つけました。
そのソフトからドラックするとAviUtl(動画編集ソフト)で読み込めて、機械の音声をだせるという便利なソフトです。
AviUtlで読み込めるファイルを知っていますが、
ソフトからファイルを出力する方法がわかりません。
ソフトからドラックしてファイルを出力するソフトの作り方を教えて下さい!

(ソフトから「Test.txt」というファイルを出力して、
そのファイルの中は、「Hello」という文字が書かれているソフトを作る)

ゆくサクの画面↓
https://youtu.be/wgoxfEYJuVs



この記事に返信する


あらや

リンク

2020/3/23(Mon) 22:29:19|NO.89801

かなり難しいと思いますが。。。
http://hsp.tv/play/pforum.php?mode=pastwch&num=4360



HSP 初心者

リンク

2020/3/24(Tue) 10:58:34|NO.89805

返信ありがとうございます。
僕が難しくて理解してないだけかもしれませんが、
HSPに読み込むのではなく、HSPから出力してデスクトップなどにドロップ
するプログラムを作りたいと思っています。
ぜひ、ゆくサクの画面の動画を見て教えて下さい。
(僕の勘違いだったらすみません。)



ソラ

リンク

2020/3/24(Tue) 15:02:11|NO.89809

あらやさんが貼ったスレがまさにそれかと。
NO.4417のサンプルのautodropで受け渡し先のハンドルを書き換えれば渡すことができますよ。



HSP 初心者

リンク

2020/3/25(Wed) 11:40:35|NO.89825

ごめんなさい、僕には理解できないのでできれば
ソースコードをください。
お願いします。



砂時 計

リンク

2020/3/28(Sat) 12:08:28|NO.89843

一度には解決できないのですが
まず HSP3 から AviUtl 拡張編集 へのドロップするコードを作りました。

実行して表示される「実行」ボタンをクリックすると
HSP3 の king_knight.png を AviUtl 拡張編集 の 100, 50 の位置へドロップします。

※NO.4417のサンプル とほぼほぼ同じことをしています。

Win10 1909, HSP3.6beta2, AviUtl 1.00, 拡張編集 0.92 で動作確認済み。


#include "user32.as" #include "kernel32.as" #include "hspext.as" #const NULL 0 #const WM_LBUTTONDOWN 0x201 #const WM_LBUTTONUP 0x202 #const WM_DROPFILES 0x233 #const GMEM_ZEROINIT 0x00 #const GMEM_FIXED 0x40 #define GPTR (GMEM_ZEROINIT | GMEM_FIXED) button gosub "実行", *act stop // 一連の実行 *act target = _findex() if target == 0 { title "拡張編集ウインドウが見つかりません" return } gosub *autodrop return // ドロップ先に伝える情報を作成する *autodrop x = 100 y = 50 s = dirinfo(5) + "\\king_knight.png" just = 20 + (strlen(s) + 1) + 1 num = (just + 3) / 4 * 4 GlobalAlloc GPTR, num addr = stat dupptr df, addr, num, vartype("int") df.0 = 20 df.1 = x df.2 = y df.3 = 0 df.4 = 0 memcpy df, s, strlen(s), 20, 0 // ドロップの実行 PostMessage target, WM_DROPFILES, addr, NULL wait 100 GlobalFree addr return // ウインドウハンドルを見つける #defcfunc _findex aplsel "拡張編集" if stat != 0 { return 0 } fulltitle = refstr FindWindow NULL, fulltitle target = stat return target

ゆくサク のようにカーソルで位置指定というのはもうちょっと実装する必要があります。



砂時 計

リンク

2020/3/28(Sat) 12:30:34|NO.89845

さっきのコードに"右"ボタンでドラッグアンドドロップするコードを追加しました。

多少ずれますが、だいたいマウスの移動先の
拡張編集ウインドウの位置へドロップできます。


#include "user32.as" #include "kernel32.as" #include "hspext.as" #const NULL 0 #const WM_LBUTTONDOWN 0x201 #const WM_LBUTTONUP 0x202 #const WM_RBUTTONDOWN 0x204 #const WM_RBUTTONUP 0x205 #const WM_DROPFILES 0x233 #const GMEM_ZEROINIT 0x00 #const GMEM_FIXED 0x40 #define GPTR (GMEM_ZEROINIT | GMEM_FIXED) oncmd gosub *down, WM_RBUTTONDOWN oncmd gosub *up, WM_RBUTTONUP button gosub "実行", *act mes "" mes "このウインドウから右ボタンで拡張編集ウインドウへドラッグアンドドロップしてください" stop // 一連の実行 *act target = _findex() if target == 0 { title "ウインドウが見つかりません" return } _autodrop 100, 50 return *down SetCapture hwnd title "ウインドウにドロップしてください..." return *up ReleaseCapture target = _findex() if target == 0 { title "見つかりませんでした" return } dim pt,2 GetCursorPos varptr(pt) ScreenToClient target, varptr(pt) result = stat title "" + result + " 位置 " + pt.0 + ", " + pt.1 _autodrop pt.0, pt.1 return // ドロップ先に伝える情報を作成する #deffunc _autodrop int x, int y s = dirinfo(5) + "\\king_knight.png" just = 20 + (strlen(s) + 1) + 1 num = (just + 3) / 4 * 4 GlobalAlloc GPTR, num addr = stat dupptr df, addr, num, vartype("int") df.0 = 20 df.1 = x df.2 = y df.3 = 0 df.4 = 0 memcpy df, s, strlen(s), 20, 0 // ドロップの実行 PostMessage target, WM_DROPFILES, addr, NULL wait 100 GlobalFree addr return // ウインドウハンドルを見つける #defcfunc _findex aplsel "拡張編集" if stat != 0 { return 0 } _fulltitle = refstr FindWindow NULL, _fulltitle _h = stat return _h

左ボタンでドラッグアンドドロップにするには
ゆくサク のように HSPウインドウ全体ではなく右半分からのみ開始するなどすると
他のボタンクリックを阻害しなくなると思います。



HSP 初心者

リンク

2020/3/28(Sat) 18:26:00|NO.89848

砂時 計さん
返信ありがとうございます!
解決しました!😌😄


ちょっと改造すると↓のようなものができました。

#include "user32.as" #include "kernel32.as" #include "hspext.as" #const NULL 0 #const WM_LBUTTONDOWN 0x201 #const WM_LBUTTONUP 0x202 #const WM_RBUTTONDOWN 0x204 #const WM_RBUTTONUP 0x205 #const WM_DROPFILES 0x233 #const GMEM_ZEROINIT 0x00 #const GMEM_FIXED 0x40 #define GPTR (GMEM_ZEROINIT | GMEM_FIXED) oncmd gosub *down, WM_RBUTTONDOWN oncmd gosub *up, WM_RBUTTONUP button gosub "実行", *act mes "" mes "このウインドウから右ボタンで拡張編集ウインドウへドラッグアンドドロップしてください" TEXTHELLO = {" [vo] length=251 camera=0 [vo.0] _name=テキスト サイズ=252 表示速度=0.0 文字毎に個別オブジェクト=0 移動座標上に表示する=0 自動スクロール=0 B=0 I=0 type=0 autoadjust=0 soft=1 monospace=0 align=0 spacing_x=0 spacing_y=0 precision=1 color=0000ff color2=000000 font=游明朝 text=533093306b3061306f3000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 [vo.1] _name=縁取り サイズ=11 ぼかし=100 color=ffffff file= [vo.2] _name=標準描画 X=-605.0 Y=-136.0 Z=0.0 拡大率=100.00 透明度=0.0 回転=0.00 blend=0 "} bsave dir_desktop + "\\こんにちは.exa",TEXTHELLO stop // 一連の実行 *act target = _findex() if target == 0 { title "ウインドウが見つかりません" return } _autodrop 100, 50 return *down SetCapture hwnd title "ウインドウにドロップしてください..." return *up ReleaseCapture target = _findex() if target == 0 { title "見つかりませんでした" return } dim pt,2 GetCursorPos varptr(pt) ScreenToClient target, varptr(pt) result = stat title "" + result + " 位置 " + pt.0 + ", " + pt.1 _autodrop pt.0, pt.1 return // ドロップ先に伝える情報を作成する #deffunc _autodrop int x, int y s = dir_desktop + "\\こんにちは.exa" just = 20 + (strlen(s) + 1) + 1 num = (just + 3) / 4 * 4 GlobalAlloc GPTR, num addr = stat dupptr df, addr, num, vartype("int") df.0 = 20 df.1 = x df.2 = y df.3 = 0 df.4 = 0 memcpy df, s, strlen(s), 20, 0 // ドロップの実行 PostMessage target, WM_DROPFILES, addr, NULL wait 100 GlobalFree addr return // ウインドウハンドルを見つける #defcfunc _findex aplsel "拡張編集" if stat != 0 { return 0 } _fulltitle = refstr FindWindow NULL, _fulltitle _h = stat return _h
みなさん本当にありがとうございます!😌😄



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