御指導願えませんか?
Posted: 2006年4月28日(金) 12:04
皆様初めましてmakoと言います。
初めてRADツールを使ってみて、いきなりよくわからない事態に陥ってしまい
教えて頂こうと思い書き込みさせて頂きました。
・やりたい内容
EditBox1とEditBox2を設置してCommandButton1をクリックした時にEditBox1の内容(複数行のURL)を取り込んで、InternetReadFile関数で読み込んだ後に中から必要な行だけを抜き出してEditBox2に表示後CommandButton1をクリックしたらクリップボードにEditBox2で表示した内容をコピーしたいと思ってるのですが上手く行きません。
どの様にしたら良いのでしょうか?
①複数行の入力があった時に全部で何行なのかどうやって調べたら良いのでしょうか?
又、各行を変数に取り込むにはどうしたら良いのか?
(現状手付かずになってます)
②EditBox1の内容を1行だけにして取り込んでみてもInternetReadFileの個所でエラーになってしまいます。
変数を使用したInternetReadFileは使えないのでしょうか?
(過去ログ等では直接http://・・・と書いてありますし)
③"***"を含むと言った検索は文字列を検索しているのですが"***"を含む行をそのまま変数に取り込む様にするにはどうしたら良いのでしょうか?
④③で取り込んだ1行をEditBox2に表示したいのですが、SendMessageの使い方が良くわかっていません。
⑤クリップボードへの取り込みは過去ログやサンプルからなんとか作れそうな気はするのですが、未だコードは入ってません。
長々とわかりにくい文章ですいません。
[/code]
'-----------------------------------------------------------------------------
' イベント プロシージャ
'-----------------------------------------------------------------------------
' このファイルには、ウィンドウ [MainWnd] に関するイベントをコーディングします。
' ウィンドウ ハンドル: hMainWnd
' TODO: この位置にグローバルな変数、構造体、定数、関数を定義します。
Declare Function InternetOpen Lib "wininet.dll" Alias "InternetOpenA" (ByVal sAgent As BytePtr,_
ByVal lAccessType As Long, ByVal sProxyName As BytePtr,ByVal sProxyBypass As BytePtr,_
ByVal lFlags As Long) As Long
Declare Function InternetOpenUrl Lib "wininet.dll" Alias "InternetOpenUrlA" (ByVal hInternetSession As Long,_
ByVal sUrl As BytePtr,ByVal sHeaders As BytePtr, ByVal lHeadersLength As Long, _
ByVal lFlags As Long, ByVal lContext As Long) As Long
Declare Function InternetReadFile Lib "wininet.dll" (ByVal hFile As Long, ByVal sBuffer As BytePtr,_
ByVal lNumBytesToRead As Long,lNumberOfBytesRead As Long) As Integer
Declare Function InternetCloseHandle Lib "wininet.dll" (ByVal hInet As Long) As Integer
Dim url As Long
Dim open As Long
Dim buffer As String
Dim Size As Long
Dim html As String
Dim SearchWord As String
Dim i As Long
Dim Gurl as string
Dim ourl As String
Dim length As Long
'-----------------------------------------------------------------------------
' ウィンドウメッセージを処理するためのコールバック関数
Function MainWndProc(hWnd As HWND, dwMsg As DWord, wParam As WPARAM, lParam As LPARAM) As DWord
' TODO: この位置にウィンドウメッセージを処理するためのコードを記述します。
' イベントプロシージャの呼び出しを行います。
MainWndProc=EventCall_MainWnd(hWnd,dwMsg,wParam,lParam)
End Function
'-----------------------------------------------------------------------------
' ここから下は、イベントプロシージャを記述するための領域になります。
Sub MainWnd_Destroy()
yousend_DestroyObjects()
PostQuitMessage(0)
End Sub
Sub MainWnd_CommandButton1_Click()
'本文テキスト データを格納するためのバッファ領域を確保
Dim hEdit As HWND
hEdit=GetDlgItem(hMainWnd,EditBox1) 'EditBox1のハンドル
length=GetWindowTextLength(hEdit)
ourl=ZeroString(length+1)
GetWindowText(hEdit, ourl, length+1)
'EditBox1から取得した文字列を保存しようとするとNULLが入ってしまう
'最後のNULLを取る
ourl=Left$(ourl,InStr(1,ourl,Chr$(0))-1)
ourl=Chr$(34)+ourl+Chr$(34)
buffer=ZeroString(1001)
open=InternetOpen(0,0,0,0,0)
url=InternetOpenUrl(open,ourl,0,0,0,0)
Size=Len(buffer)
Do
InternetReadFile(url,buffer,1000,VarPtr(Size))
html=html+Left$(buffer,InStr(1,buffer,Chr$(0))-1)
Loop While Size<>0
InternetCloseHandle(open)
SearchWord="/file/"
i=1
Do
i=InStr(i, buffer, SearchWord)
If i=0 Then
Exit Do
End If
' buf=Str$(i)+"文字目に、文字列「"+SearchWord+"」があります。"
' MessageBox(0,buf,"目的の場所",MB_OK)
Gurl=Mid$(buffer,i,63)
i=0
Loop
SendMessage(EditBox2,Gurl) '取りあえず書いてあるだけです^^;
End Sub
初めてRADツールを使ってみて、いきなりよくわからない事態に陥ってしまい
教えて頂こうと思い書き込みさせて頂きました。
・やりたい内容
EditBox1とEditBox2を設置してCommandButton1をクリックした時にEditBox1の内容(複数行のURL)を取り込んで、InternetReadFile関数で読み込んだ後に中から必要な行だけを抜き出してEditBox2に表示後CommandButton1をクリックしたらクリップボードにEditBox2で表示した内容をコピーしたいと思ってるのですが上手く行きません。
どの様にしたら良いのでしょうか?
①複数行の入力があった時に全部で何行なのかどうやって調べたら良いのでしょうか?
又、各行を変数に取り込むにはどうしたら良いのか?
(現状手付かずになってます)
②EditBox1の内容を1行だけにして取り込んでみてもInternetReadFileの個所でエラーになってしまいます。
変数を使用したInternetReadFileは使えないのでしょうか?
(過去ログ等では直接http://・・・と書いてありますし)
③"***"を含むと言った検索は文字列を検索しているのですが"***"を含む行をそのまま変数に取り込む様にするにはどうしたら良いのでしょうか?
④③で取り込んだ1行をEditBox2に表示したいのですが、SendMessageの使い方が良くわかっていません。
⑤クリップボードへの取り込みは過去ログやサンプルからなんとか作れそうな気はするのですが、未だコードは入ってません。
長々とわかりにくい文章ですいません。
[/code]
'-----------------------------------------------------------------------------
' イベント プロシージャ
'-----------------------------------------------------------------------------
' このファイルには、ウィンドウ [MainWnd] に関するイベントをコーディングします。
' ウィンドウ ハンドル: hMainWnd
' TODO: この位置にグローバルな変数、構造体、定数、関数を定義します。
Declare Function InternetOpen Lib "wininet.dll" Alias "InternetOpenA" (ByVal sAgent As BytePtr,_
ByVal lAccessType As Long, ByVal sProxyName As BytePtr,ByVal sProxyBypass As BytePtr,_
ByVal lFlags As Long) As Long
Declare Function InternetOpenUrl Lib "wininet.dll" Alias "InternetOpenUrlA" (ByVal hInternetSession As Long,_
ByVal sUrl As BytePtr,ByVal sHeaders As BytePtr, ByVal lHeadersLength As Long, _
ByVal lFlags As Long, ByVal lContext As Long) As Long
Declare Function InternetReadFile Lib "wininet.dll" (ByVal hFile As Long, ByVal sBuffer As BytePtr,_
ByVal lNumBytesToRead As Long,lNumberOfBytesRead As Long) As Integer
Declare Function InternetCloseHandle Lib "wininet.dll" (ByVal hInet As Long) As Integer
Dim url As Long
Dim open As Long
Dim buffer As String
Dim Size As Long
Dim html As String
Dim SearchWord As String
Dim i As Long
Dim Gurl as string
Dim ourl As String
Dim length As Long
'-----------------------------------------------------------------------------
' ウィンドウメッセージを処理するためのコールバック関数
Function MainWndProc(hWnd As HWND, dwMsg As DWord, wParam As WPARAM, lParam As LPARAM) As DWord
' TODO: この位置にウィンドウメッセージを処理するためのコードを記述します。
' イベントプロシージャの呼び出しを行います。
MainWndProc=EventCall_MainWnd(hWnd,dwMsg,wParam,lParam)
End Function
'-----------------------------------------------------------------------------
' ここから下は、イベントプロシージャを記述するための領域になります。
Sub MainWnd_Destroy()
yousend_DestroyObjects()
PostQuitMessage(0)
End Sub
Sub MainWnd_CommandButton1_Click()
'本文テキスト データを格納するためのバッファ領域を確保
Dim hEdit As HWND
hEdit=GetDlgItem(hMainWnd,EditBox1) 'EditBox1のハンドル
length=GetWindowTextLength(hEdit)
ourl=ZeroString(length+1)
GetWindowText(hEdit, ourl, length+1)
'EditBox1から取得した文字列を保存しようとするとNULLが入ってしまう
'最後のNULLを取る
ourl=Left$(ourl,InStr(1,ourl,Chr$(0))-1)
ourl=Chr$(34)+ourl+Chr$(34)
buffer=ZeroString(1001)
open=InternetOpen(0,0,0,0,0)
url=InternetOpenUrl(open,ourl,0,0,0,0)
Size=Len(buffer)
Do
InternetReadFile(url,buffer,1000,VarPtr(Size))
html=html+Left$(buffer,InStr(1,buffer,Chr$(0))-1)
Loop While Size<>0
InternetCloseHandle(open)
SearchWord="/file/"
i=1
Do
i=InStr(i, buffer, SearchWord)
If i=0 Then
Exit Do
End If
' buf=Str$(i)+"文字目に、文字列「"+SearchWord+"」があります。"
' MessageBox(0,buf,"目的の場所",MB_OK)
Gurl=Mid$(buffer,i,63)
i=0
Loop
SendMessage(EditBox2,Gurl) '取りあえず書いてあるだけです^^;
End Sub
コード: 全て選択