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


HSPTV!掲示板


未解決 解決 停止 削除要請

2009
1101
ドンキーファイル選択ダイアログにてファイル名を自動入力6解決


ドンキー

リンク

2009/11/1(Sun) 15:07:13|NO.28629

いつもココにはお世話になっておりますm(__)m
現在ブログに自動で画像をアップするものを作っているのですが、
IEコンポではファイル名をvalueに入れられず、どうしても
ファイル選択ダイアログを開いてファイルを指定しなくてはならなくなりました。

そこでファイル選択ダイアログのファイル名の箇所にファイル名を自動で入力する
方法を探しています。お解りの方、教えていただけないでしょうか。

ファイル名を入力する箇所にも、オブジェクト名ってあるのでしょうか?

よろしくお願いします。



この記事に返信する


VGM

リンク

2009/11/2(Mon) 22:39:36|NO.28653

以前 私が自分用に作ったモジュールです。(コメントなし)
ご不明な点がありましたら質問してください。(自分でも忘れている部分も有りますが)
ご自由に改変&使用下さい。

p3 に初期ファイル名を入力。

// http://yokohama.cool.ne.jp/chokuto/urawaza/struct/OPENFILENAME.html ←参考 ////////////////////////////////////////////////// // GetFileDialog p1,p2,p3,p4,p5 // // p1 == str Filter // // p2 == str FilterInfo // // p3 == str DefaultFileName // // p4 == int DefaultFilterIndex // // p5 == int (0) 開く // // (1) 保存 // // 戻り値 // // stat >= 1 取得したファイル数 // // stat == 0 取得失敗 // // refstr 取得したファイル名 // ////////////////////////////////////////////////// #uselib "Comdlg32.DLL" #module #func GetOpenFileName "GetOpenFileNameA" int #func GetSaveFileName "GetSaveFileNameA" int #define OFN_FILEMUSTEXIST $00001000 //複数選択用 #define OFN_ALLOWMULTISELECT $00000200 //複数選択用 #define OFN_EXPLORER $00080000 //複数選択用 #define OFN_HIDEREADONLY $00000004 //「書込み禁止」チェックボックスを無効にします。 #define BUFSIZE 1024*10 #deffunc GetFileDialog str Fil,str FilInfo,str DefaultFileName,int DFIndex,int OpenSaveFlg sdim aplFilter , (strlen(Fil)+strlen(FilInfo))*2 //FILTERSIZE sdim usrFilter , (strlen(Fil)+strlen(FilInfo))+4 //FILTERSIZE sdim filename , BUFSIZE+1 filename=DefaultFileName DefaultFilterIndex=DFIndex Filter=""+Fil FilterInfo=""+FilInfo fss=0 iss=0 getstr f,Filter,fss,0 : fss+=strsize getstr i,FilterInfo,iss,0 : iss+=strsize usrFilter=""+i+" ("+f+")@"+f+"@@" aplFilter="" brflg=0 repeat getstr f,Filter,fss,0 : fss+=strsize : if strsize=0 : brflg+ getstr i,FilterInfo,iss,0 : iss+=strsize : if strsize=0 : brflg+ if brflg>=1 : break aplFilter+=""+i+" ("+f+")@"+f+"@" await 0 loop aplFilter+="@" start = 0 repeat mutch=instr(aplFilter,start,"@") if mutch = -1 : break poke aplFilter , start + mutch , $00 start += mutch + 1 await 0 loop start = 0 repeat mutch=instr(usrFilter,start,"@") if mutch = -1 : break poke usrFilter , start + mutch , $00 start += mutch + 1 await 0 loop lpstrInitialDir=dir_cur dim ofn,22 ofn.0 = 88 ; lStructSize ofn.1 = hwnd ; hwndOwner ofn.2 = hInstance ; hInstance ofn.3 = varptr(aplFilter) ; lpstrFilter ofn.4 = varptr(usrFilter) ; lpstrCustomFilter ofn.5 = FILTERSIZE ; nMaxCustFilter ofn.6 = DefaultFilterIndex ; nFilterIndex ofn.7 = varptr(filename) ; lpstrFile ofn.8 = BUFSIZE ; nMaxFile ofn.9 = 0 ; lpstrFileTitle ofn.10= 0 ; nMaxFileTitle ofn.11= varptr(lpstrInitialDir) //0 ; lpstrInitialDir ofn.12= 0 ; lpstrTitle if OpenSaveFlg&1 : { ofn.13= OFN_FILEMUSTEXIST | OFN_EXPLORER | OFN_HIDEREADONLY ; Flags GetSaveFileName varptr(ofn) } else { ofn.13= OFN_FILEMUSTEXIST | OFN_ALLOWMULTISELECT | OFN_EXPLORER | OFN_HIDEREADONLY ; Flags GetOpenFileName varptr(ofn) } if stat=0 : return 0 sdim getfilename,1024*10 sdim rfs,1024*10 st=0 ss=0 repeat getstr gfn,filename,ss,0 : ss+=strsize+1 : if strsize=0 : break : else : { if cnt>0 : getfilename+="\n" getfilename+=gfn } st=cnt await 0 loop if st=0 : st=1 : rfs=filename : else : { ss=0 a="" getstr a,getfilename,ss,0 : ss+=strsize repeat st if cnt>0 : rfs+="\n" getstr b,getfilename,ss,0 : ss+=strsize rfs+=""+a+"\\"+b loop } mref st_,64 : st_=st mref rfs_,65 : rfs_=rfs return #global ////////////////////////////////////////////////// // 制作開始日 2009/06/01 23:40 // // 最終更新日 2009/06/03 16:55 // // (C)VGM // ////////////////////////////////////////////////// //以下サンプルプログラム title "GetFileDialog SampleProgram" Filter ="*.hsp" + "\n" Filter+="*.bmp;*.gif;*.jpg;*.ico" + "\n" Filter+="*.mid;*.mp3;*.wav;*.wma" + "\n" Filter+="*.txt;*.doc" + "\n" Filter+="*.*" FilterInfo ="HSPsource" + "\n" FilterInfo+="画像ファイル" + "\n" FilterInfo+="音楽ファイル" + "\n" FilterInfo+="文書ファイル" + "\n" FilterInfo+="すべてのファイル" DefaultFileName="mod_GetFileDialog.hsp" DFIndex=0 OSFlg=0 font MSGothic,12 GetFileDialog Filter,FilterInfo,DefaultFileName,DFIndex,OSFlg if stat=0 : mes "取得失敗" : stop mes refstr mes "取得ファイル数:"+stat stop



ドンキー

リンク

2009/11/3(Tue) 00:10:13|NO.28659

VGMさん、返信ありがとうございます。
さっそく解読させていただきます。
またわからないことがありましたら質問させていただきます。
よろしくお願いします。



ken

リンク

2009/11/3(Tue) 10:00:30|NO.28660


dialog ";test.txt",16

じゃいけないの?



ドンキー

リンク

2009/11/4(Wed) 00:01:17|NO.28672

kenさん、返信ありがとうございます。
その使い方、初めて知りました。
ただ、もう開いてしまったファイル選択ダイアログにファイル名を入れたいのです。
IEコンポでtype="file"をクリックして開くダイアログなので、
先に名を指定することが出来ません。
自分の説明が足らず申し訳ありませんでした。



inovia

リンク

2009/11/4(Wed) 02:22:00|NO.28680

これならイケるかな?


#include "user32.as" //アップロードするファイル名 fname=dir_exe+"\\doclib\\hsp3ttl.jpg" axobj ie, "Shell.Explorer.2",640,480 ie->"Navigate" "http://tkooler.moe.hm/hsp/up_test/upload.html" //しばらく待つ repeat wait 10 if ie("Busy")=0:break loop pDoc=ie("Document") repeat wait 10 if pDoc("readyState")="complete":break loop //ウィンドウタイマーセット oncmd gosub *Timer, 0x113 SetTimer hwnd, 1, 1, 0 //アップフォーム表示 pForms=pDoc("forms",0) pStr=pForms("upfile") pStr->"click" repeat /*送信*/ // *Timer 内に持ってくると送信できないのでここに配置 if SendOK=1{ pForms -> "submit" break } wait 12 loop stop *Timer GetWindowThreadProcessId hwnd,0 //自プロセスID hp=stat:hw=0 repeat FindWindowEx 0,hw,"#32770",0 hw=stat if hw=0:break GetWindowThreadProcessId hw,0 //プロセスID if stat=hp{ FindWindowEx hw, 0,"ComboBoxEx32","" SendMessage stat,0x0C,strlen(fname),varptr(fname) //Enterを押す keybd_event 0x0D,0,0,0 //タイマー解除 KillTimer hwnd,1 //送信フラグ SendOK=1 break } loop return



ドンキー

リンク

2009/11/4(Wed) 16:32:27|NO.28685

inoviaさん!出来ました。すごいです。
自分のしたかったことがやっと出来ました。
感謝、感謝です。
inoviaさんはじめ、ご返信いただいた方、本当にありがとうございました。
また、わからないことがありましたら、よろしくお願いします。



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