あのー、今VBでHPのアドレスを入力するとそのHPのソースが表示できるプログラムを作ろうと思っているんですが、VBでできるのでしょうか?

このQ&Aに関連する最新のQ&A

A 回答 (6件)

インターネットには、繋がっている環境ですか?


ソースが間違っていました。

Private Sub Command1_Click()
Command1.Enabled = False
Text1.Text = GetSource()
Command1.Enabled = True
End Sub

Function GetSource() As String
Dim strBuf As String
Dim strURL As String
strURL = "http://www.microsoft.com/japan/ms.htm"
strBuf = Inet1.OpenURL(strURL)'ファイル内容を取得
GetSource = strBuf
End Function

固まってしまったのは、インターネット接続中の時に連打したためおかしくなってしまったのだと思われます。
    • good
    • 0
この回答へのお礼

す、すごい、動きました。すげー!!なんでできるんですか?本当にありがとうございました。

お礼日時:2001/11/28 15:26

Formにボタンとテキストボックスを貼り付けて、


テキストボックスのMultiLineをTrueにします。
ボタンをダブルクリックし次のようにクリックイベントにコードを追加します。

Private Sub Command1_Click()
Text1.Text=GetSource()
End Sub

これでどうですか?
    • good
    • 0
この回答へのお礼

ありがとうございました。それはこういうことですか?
Private Sub Command1_Click()
Text1.Text = GetSource()
End Sub
Function GetSource() As String
Dim strBuf As String
Dim strURL As String
strURL = "http://www.microsoft.com/japan/ms.htm"
strBuf = Inet1.OpenURL(strURL)
strBuf = GetSource
End Function
これでボタンをクリックしたら画面が止まったような感じになるので、ボタンを連打したら「最後の要求が実行中です」と出てしまいました。
なんでですかね、難しいですね。

お礼日時:2001/11/28 14:00

コンポーネントの追加で「Microsoft Internet Transfer Controll」を追加してFormに貼り付けます。



Function GetSource() As String
Dim strBuf As String
Dim strURL As String
strURL = "http://www.microsoft.com/japan/ms.htm"
strBuf = Inet1.OpenURL(strURL)
strBuf = GetSource
End Function
こんなんでどうでしょう?
    • good
    • 0
この回答へのお礼

回答ありがとうございました。コンポーネントの追加で「MicrosoftInternet Transfer Controll」を追加してFormに貼り付けて、回答いただいたプログラムを書いたところ、全体が灰色のFormが表示されて文字は無かったです。Form上には「Microsoft Internet Transfer Controll」以外でListBoxとか何か貼り付けなければいけないんでしょうか?

お礼日時:2001/11/27 22:25

InternetReadFile関数のサンプルをどうぞ



参考URL:http://www.vbvbvb.com/jp/gtips/0101/gInternetRea …
    • good
    • 0
この回答へのお礼

ちょっと難しいことが書かれていたんですが、わかるところもあり参考になりました。ありがとうございました。

お礼日時:2001/11/27 22:09

こんにちは、honiyonです。



 いえいえ、TELNETでやるもの、というものではありません。
 実際にその処理の流れを目で確認してもらった方がわかりやすいのではないか、という事で、HTTPプロトコルによる通信を TELNETクライアントを用いて説明しただけです。
 また、今手動で行った処理を、そのままプログラミングすればソースを取得するソフトが作れるよ、という意味も含んでいます。

 説明が下手ですいません(..
    • good
    • 0
この回答へのお礼

手動で行った処理をプログラミングですか。難しそうですね、でもがんばりたいと思います。ご丁寧にありがとうございました。

お礼日時:2001/11/26 00:17

こんにちは、honiyonです。



 Winsockを使えば VBで TCP/IP通信が可能です。
 ひょっとしたら Winsockを更に簡単に使えるようにするコンポーネントがあるかもしれません。


 では実際にどうやってソースを取得するか説明します。
 スタート>ファイルを指定して実行>TELNET www.yahoo.co.jp 80

 と入力してください。
 TELNETウインドウが開きます。(何も表示されていません)

 ここで、
 GET / HTTP/1.0

 と入力して、Enterを 2回押してください。
 (ここでの入力した文字は、場合によっては画面に表示されない可能性があります。)

 すると、画面にだら~っと YAHOOのトップページのソースが表示されたと思います。

 因みに、 http://www.yahoo.co.jp/~honiyon/hoge.html のソースを取得したければ、
 GET /~honiyon/hoge.html HTTP/1.0

 とします。

 つまり、目的のソースがあるサーバーの 80番ポートに接続し、 GET~という文字列と Enterを2回送ってやればソースは取得できるわけです。


 これを自分で実現できれば一番良いですが、面倒くさい場合は、IEの ActiveXコンポーネントを使うのが一番楽です。
 ActiveXの一覧を参照するとそれらしいのが見つかると思いますので、インポートして適当にいじりまわしてみてください。(結構簡単に使い方が分かると思います) あとは、「IE」とか「ActiveX」とかでWWWを検索していると結構ヒントが見つかります。

 参考になれば幸いです(..
    • good
    • 0
この回答へのお礼

ありがとうございました。それはVBで直接プログラムを書くのではなくて、TELNETを使ってソースを取得するものなのですかね。そのようなやり方もあるんですね。
参考になりました。

お礼日時:2001/11/25 01:25

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aと関連する良く見られている質問

QテキストBOXに入力した数式をプログラムソースとして使用する方法

テキストBOXに数式を入力すると、文字列と認識しますが、これを変数化して
プログラムのソースにしたいのです。どのような方法があるでしょうか。
ぜひ、お教えください。よろしくお願い致します。

Aベストアンサー

QNo.85326で同じ質問をされたのですね。
http://www.okweb.ne.jp/kotaeru.php3?q=85326

こちらで、補足されたほうがいいと思うのですが。
85326の質問を見ると変数を使用したいのですね。そうすると、ExecuteStatementを使用する必要があります。先ほどの回答のように、Script Controlで、VBScriptを指定して、下記のように使用します。

Private Sub Command1_Click()
Dim Result
ScriptControl1.ExecuteStatement (" x = 10 ")
ScriptControl1.ExecuteStatement (Text1.Text)
Result = ScriptControl1.Eval(" y ")
Text2.Text = Result
End Sub

テキストボックスText1に、y = x * 2 が入力された場合

x = 10
y = x * 2

が実行されたのと同じになり、
Eval("y")で、変数yの値が取り出されます。

QNo.85326で同じ質問をされたのですね。
http://www.okweb.ne.jp/kotaeru.php3?q=85326

こちらで、補足されたほうがいいと思うのですが。
85326の質問を見ると変数を使用したいのですね。そうすると、ExecuteStatementを使用する必要があります。先ほどの回答のように、Script Controlで、VBScriptを指定して、下記のように使用します。

Private Sub Command1_Click()
Dim Result
ScriptControl1.ExecuteStatement (" x = 10 ")
ScriptControl1.ExecuteStatement (Text1.Text)
Result...続きを読む

QVB6イルミネーションプログラムその3

いつもお世話になっています。
テキストボックスに1~255までの数字を入力し、コマンドボタンをクリックしたら、入力した数字を2進数に変換してランプを点灯するというプログラムを考えています。
例えば、テキストボックスに170と入力し、コマンドボタンをクリックしたら以下の様にランプが点灯するプログラムです。

●○●○●○●○
10101010 170の2進数

色々と調べ目的とする動きはするのですが、別の方法として値を引数にして2進数に変換した値でランプを点灯する処理を手続き(サブルーチン)として分離するという処理はどのようにすればよいのでしょうか?

現コードは以下です。(未熟ですので、コメントが見苦しくすみません…)

Private Sub cmd1_Click()

'変数の宣言
Dim Kazu As String
Dim Binary(7) As Integer
Dim Nishin As Integer
Dim Value As String
Dim Index As Integer

'テキストボックスへ入力した文字列を数値型に変換し、格納
Nishin = Val(txtKazu.Text)

'2進数への変換処理
For Index = 0 To 7 Step 1

'Nishinに入力された数値を2で除算し、8ビット分の余りを繰返し求め格納
Binary(Index) = Nishin Mod 2

'Nishinの除算の商を求め、格納
Nishin = Nishin \ 2

Next Index


'各余りを下から順に並べる処理
For Index = 7 To 0 Step -1

'変数Binaryを変数Kazuの型である文字列型へ変換し、連結して格納
Kazu = Kazu & CStr(Binary(Index))

Next Index

'2進数の結果をランプコントロールへ反映
CWBtn(0).Value = Mid(Kazu, 8, 1)
CWBtn(1).Value = Mid(Kazu, 7, 1)
CWBtn(2).Value = Mid(Kazu, 6, 1)
CWBtn(3).Value = Mid(Kazu, 5, 1)
CWBtn(4).Value = Mid(Kazu, 4, 1)
CWBtn(5).Value = Mid(Kazu, 3, 1)
CWBtn(6).Value = Mid(Kazu, 2, 1)
CWBtn(7).Value = Mid(Kazu, 1, 1)


End Sub


サブルーチンって??と思い、サイトや参考書を色々と見たのですが、サンプルコードなどを見ても理解出来ませんでした。
未熟で理解が浅いのですが、役割として「離れた箇所の文の並びを実行し、元の場所に制御を戻す」という様な感じですよね…元の場所で実行せず、わざわざ離れた箇所で実行するメリットもピンときません…
宜しくお願いします。

いつもお世話になっています。
テキストボックスに1~255までの数字を入力し、コマンドボタンをクリックしたら、入力した数字を2進数に変換してランプを点灯するというプログラムを考えています。
例えば、テキストボックスに170と入力し、コマンドボタンをクリックしたら以下の様にランプが点灯するプログラムです。

●○●○●○●○
10101010 170の2進数

色々と調べ目的とする動きはするのですが、別の方法として値を引数にして2進数に変換した値でランプを点灯する処理を手続き(サブルーチン)として...続きを読む

Aベストアンサー

サブルーチンは私の言葉で簡単に表現しますと、特定の動作をする「小さな部品」です。ただ、
百聞は一見にしかず!!
ということで、質問に書いてあるプログラムをサブルーチンにくくり出して見ましょう。まず、2進数の文字列に変換することだけをするプログラムの部品です。この部品にDecToBinaryという名前を仮につけてあげましょう。その部品にはこんなソースを書きます。
Private Function DecToBinary(Byval intValue As Integer) As String
DecToBinary = ""
Do Until intValue < 2
DecToBinary = CStr(intValue Mod 2) & DecToBinary
intValue = Int(intValue / 2)
Loop
DecToBinary = CStr(intValue) & DecToBinary
End Function
負の数は考えていませんが、あしからず。
さて、部品が1個できました。この部品を使うにはCallステートメントを使います。使い方はこうです。
Call DecToBinary(170)
本当はCallは省略できて、「DecToBinary 170」という風に書くこともできます。むしろ省略するほうが有名ですよね。
しかし、この部品はFunctionプロシージャーです。Subプロシージャーと違って部品が動いた結果を部品の名前自身が変数となって教えてくれるのです。この例ですと
strResult=DecToBinary(170)
という風に書きますと、実行されるとstrResultのなかには"10101010"という文字が入ることになります。DecToBinaryという部品はそういう仕事をする専用に今ここに生まれたわけです。
さて、10進数を2進数に変換できただけではまだ目的の動作は完了できませんよね。ですので、もうちょっと大きな目線で見ましょう。
数字を受け取ると、2進数に変換して、その2進数の値にしたがってランプコントロールのValueプロパティーを変更して初めて仕事が完了するわけですので、その動作を行う部品を作りましょう。この部品には「SwitchLamp」とでも名前をつけてみましょう。すると、SwitchLampという部品のソースはこうなります。
Private Sub SwitchLamp(intValue As Integer)
Dim I As Integer, strResult As String
strResult = DecToBinary(intValue) '(1)
'8桁未満の場合は頭に0が足りないので足りない分だけ0を追加する
If Len(strResult) < 8 Then strResult = String(8 - Len(strResult), "0") & strResult
For I = 1 To 8
'CWBtnのValueプロパティーはTrueかFalseの指定であると
'勝手に解釈しています。違う場合はこの部分を修正してください
CWBtn(I - 1).Value = (Mid$(Right$(strResult, I), 1) = 1)
Next
End Sub
(1)の部分が先ほど作った10進数から2進数に変換する部品を呼び出しているところです。似たような動作を何度もするところをこのように小さな部品にしてしまうのです。そして、部品にして、部品にした仕事はその部品に代わりに仕事をしてもらうのです。仕事を部下に丸投げする上司みたいですよね。でもそういう捕らえ方で大丈夫です。
小さいところですが、ランプコントロールのValueを変更する部分もFor~Nextでまとめちゃうと、コードが非常にすっきりしてますよね?これがサブルーチン化のメリットの1個です。いろいろな部品を組み合わせて1個の大きな動作をする機械を作り上げるのです。
最後に、これで目的の動作をする機械は完成しました。しかし、1個まだ問題が残っています。機械はできても、この機械はいつ動けばいいのでしょう?
その答えが一番頭にあり、かつこの質問の心臓部ですね。コマンドボタンを押したらこの機械を動かしなさい。そうすることによってこの機械は動作を開始して、目的の動作をこの機械が行ってくれるのです。そのためのコードは下のような感じです
Private Sub Command1_Click()
Call SwitchLamp(Val(txtKazu.Text))
End Sub
この1行だけです。とてもシンプルになりましたよね。日常に例えると「機械のスタートボタンをポンと押した」という感じでしょうか。
よって、コマンドボタンがたくさん増えて40個目が押されたとしても
Private Sub Command40_Click()
Call SwitchLamp(Val(txtKazu.Text))
End Sub
書くのは同じこの1行だけでいいのです。

最後になりましたが、サブルーチン化はコードが見やすくなり、見やすくなることでバグが発生しにくいプログラムを作ることができるようになります。一番初めの2進数に変換する部分でも「(Byval intValue As Integer)」と書きましたよね?これによって変な文字を入力しようとするとこの部品を呼び出そうとした場所でエラーが起こりますので、バグの原因の発見も早くなるといった小さいけれど侮れない大きなメリットもあるのです。
また、余談ですが、サブルーチンを呼び出してそこへ飛ぶということは、呼び出して終わった後、呼び出された元へ飛んで帰らなければいけません。あまり部品を小さく区切りすぎると逆に処理が遅くなるということも起こります。過ぎたるは及ばざるが如し、程々が一番ですね。
以上、長文失礼いたしました。

個人的なことですが、私もVB使いです。昔は私もaries-0323さんと同じようなことで悩み、同じようなコードを記述していました。aries-0323さんが今後より上達できることを応援します。

サブルーチンは私の言葉で簡単に表現しますと、特定の動作をする「小さな部品」です。ただ、
百聞は一見にしかず!!
ということで、質問に書いてあるプログラムをサブルーチンにくくり出して見ましょう。まず、2進数の文字列に変換することだけをするプログラムの部品です。この部品にDecToBinaryという名前を仮につけてあげましょう。その部品にはこんなソースを書きます。
Private Function DecToBinary(Byval intValue As Integer) As String
DecToBinary = ""
Do Until intValue < 2
D...続きを読む

QVBで内部処理のみ行って終了するプログラムを作るには?

VB6.0でコマンドラインからの引数をテキストファイルに出力して終了させるプログラムを作りたいのですが、フォームなど特に画面に表示することなく内部で処理をしたら勝手に終了させるにはどうしたらよいのでしょうか?
初心者の間の抜けた質問で申し訳ありませんが、どなたかアドバイスをお願いします。

Aベストアンサー

以下の手順でどうぞ。

(1)標準モジュールを追加します。
(2)Mainという名称で、サブプロシージャを作成し、ここに一連の処理を記述。
Public Sub Main()
'コマンドラインからの引数をテキストファイルに出力して終了させる処理を記述
End Sub
(3)メニューバー → プロジェクト → プロジェクトのプロパティ →
 全般タブ → スタートアップの設定 → 「Sub Main」を選択 → 「OKボタン」で確定
(4)Formは使用しないと言うことなので、解放する。
 (Loadしなければ良いだけなので、解放しなくても良いですが・・・)
(5)Exeを作成して完成です。

ちなみに、デバッグしたい時は、先ほどのプロジェクトのプロパティダイアログから、
実行可能ファイルの作成タブ → コマンドライン引数
に値を設定すれば、VBEから実行出来ます。

QVB.NETで別々に作ったプログラムを一つにまとめたい

こんばんは。
VB.NETで複数のプログラムを別々に作って、
一つにまとめる場合、変数の名前などが
だぶってしまったりするのですが、
こういうのを自動で簡単にまとめる方法はないでしょうか?
(自動で変数名をリネームするような?)


修正箇所がたくさんあると大変なので、
良い方法がありましたら、教えていただけると助かります。

Aベストアンサー

みなさんと別の観点から

>変数の名前などが
>だぶってしまったりするのですが、
まず
モジュール結合度の観点から
作る段階でグローバル変数を
極力減らす。
ローカル変数を極力使うようにする。

>VB.NETで複数のプログラムを別々に作って、
これが複数の人との開発なら
それとCVS(個人的にはVSSはあまりお奨めしない)
などで前もってソース管理をしておく。

QVB2010 で作るったプログラムが動くOSは?

Microsoft Visual Studio 2010 の Visual Basic でプログラムを作ろうとしています。

出来上がったプログラムが動くOSのバージョンを知りたいのですが、ご存じの方はおられませんか?Windows 98 / 2000 / XP / Vista / 7 のどのOS上なら標準で動作するでしょうか。

また .net framework のどのバージョンをインストールすれば動くのかといった条件も知りたいのです。よろしくお願いします。

Aベストアンサー

.NETのどのバージョンを対象にビルドしたかによります。
VS2010なら、ビルドの設定を何もいじってなければ.NET Freamework 4になってると思います。
バージョンごとの対応OSは、こちらのURLに表で纏められていますので参考にしてください。
(「各.NETバージョンと対応OSの関係 という項です」)
http://www.atmarkit.co.jp/fdotnet/chushin/opinion_dotnetversion/opinion_dotnetversion.html


このカテゴリの人気Q&Aランキング

おすすめ情報