VBプログラマ質問スレ(6.0以前) Part31

このエントリーをはてなブックマークに追加
925デフォルトの名無しさん:04/02/19 22:09
指定したURLのHTMLソースを取得しようと思ったのですがうまくいきません。

winsockを使ってTCP接続後、HTTPにのっとってソースを取得しました。
しかし、Yahooなどだと日本語が文字化け?していまいました。
どうしたらいいのか分からず、strconv使ったりしましたがダメでした。
どなたか教えて下さい。
>>925
文字コードの基本から勉強しなさい。
それがわからないようならIEのコンポーネントで我慢すべし。

>>923
面倒だからフォームっぽい自前のコントロールを作ったほうが早いんじゃないの。
そりゃ言い過ぎか?
とにかくそんな標準とは違うインターフェイスはお勧めできない。

>>913
それが簡単にできたらそこら中のプログラムがそんなことやって収拾つかなくなる訳よ。
だから止めとき。

>>907
WinsockはWindowsに移植されたソケットライブラリの名前。
Winsockをラップして使いやすくしたのがWinsockコントロール。
混同していると訳分からなくなるぞ。

927デフォルトの名無しさん:04/02/19 22:50
>>913
自己レス。
Alt+Tabなどのキーコンビネーションはローレベルキーボードフックで
取れることが判明。
http://www.google.co.jp/search?q=cache:gxOt-9Q9EEsJ:msdn.microsoft.com/msdnmag/issues/0700/Win32/Win320700.asp+Alt+Tab+Hook&hl=ja&ie=UTF-8
928923:04/02/19 23:29
>>926 すばやいレス感謝

”やろうとすれば”自分でコントロールを配置することも可能でしょうね。
とりあえず、MDIみたいにVBで用意されてるかどうか、という風に質問の
言葉を補うといいのでしょうか?

”VBで作った”といわれるソフトにそういうのがあったので出来ると
思ったのですが、VBの参考書のどこを探してもMDIしか見当たらない。
不思議に思って聞いてみたわけです。

”標準的な機能の中では無い”ということなのですね。
>>928
できなくはないだろうけど、標準と離れたことをしようとするならVBの優しさが仇になる。
そこまでする理由がある?
標準と離れてるかどうか聞きたかったんだろ
>>928
標準的なやり方ではできないと思うよ。
「変わったことをやるやり方の中では標準的なやり方」はあるかも知れんけど、
VBで普通にやったら無理
932923:04/02/20 00:32
>929-931

了解です。
サンクス湖
933デフォルトの名無しさん:04/02/20 02:26
教えてちょ。

VB6.0、DBがPostgreSQL7.4&ODBCで開発しております。
んで、VBからPostgreSQLのbytea型に画像データをインサートしたいんです。

JAVAやらCやらでは、出来るのだが、VBだときついですかね。

ちなみに、ORACLE+VB+ODBCなら行けました。

抽象的で申し訳ないのだが、同じような開発をした人がいたら
教えていただきたい。

均等割付でお願いします。
935934:04/02/20 03:06
うぉ、誤爆った。

              ┗0=============0┛
     \===========[_|_|_|_|_|_|_|_|_|_|_|_|_|_]===========/
     /三三三三三三三三三三三三三三三三三三三三\
    0 │ |∞∞∞ |::|∞∞田田田田田田∞∞|::|∞∞∞ | ::|  0
 ...[二] | ::|       |::|┏━━━━━━━━┓|::|       | ::l [二]
........|□|.│ |┌┬┐ |::|┃  /        \  ┃|::| ┌┬┐| ::|. |□|
  )三(...| ::|├┼┤ |::|┃/            \┃|::| ├┼┤| ::|`)三(´
   | ::| | ::|└┴┘ |::|┃ / ̄ ̄ ̄ ̄ ̄\ ┃|::| └┴┘| ::| | ::|
   | ::| | ::|┌┬┐ |::|┃彳 人______ ノ.┃|::| ┌┬┐| ::| | ::|
   | ::| | ::|├┼┤ |::|┃入丿ー◎-◎ーヽミ.┃|::| ├┼┤| ::| | ::|
   |: :| | ::|└┴┘ |::|┃ r   . (_ _)     )┃|::| └┴┘| ::| | ::|
   | ::| | ::|┌┬┐ |::|┃ (  ∴.ノ▽(∴  ノ ┃|::| ┌┬┐| ::| | ::|
   | ::| | ::|├┼┤ |::|┃⌒\_____ノ⌒┃|::| ├┼┤| ::| | ::|
   | ::| | ::|└┴┘ |::|┃    ┗━┛   .┃|::| └┴┘| ::| | ::|
   | ::| | ::|   ... |::|┃   . .>>1-1000  .┃|::|      | ::| | ::|
.....┏━━━━━┓| .|┃          ......┃|::|┏━━━━━┓
.....┣┳┳┳┳┳┫|: |┗━━━━━━━━┛|::|┣┳┳┳┳┳┫
     ○    ●        ∫∬∫∬        ●    ○
     ○○  ●●      iiiii iii ii iiii       ●●  ○○
    [ ̄ ̄] [ ̄ ̄]   ( ̄ ̄ ̄ ̄ ̄)    [ ̄ ̄] [ ̄ ̄]
    |_○_|  .|_○_|     |_____|     |_○_|  .|_○_|
 ∧_∧ ∧_∧ ∧_∧ ∧_∧ ∧_∧ ∧_∧ ∧_∧ ∧_∧ ∧_∧
(    )(    )(,    )(,,    )    ,,)(    )(    )(,    )( ゚Д゚ )
937デフォルトの名無しさん:04/02/20 14:05
教えて下さい。

VB6.0 SP5 でアプリケーションを開発しデストリビューションウィザードで
パッケージ化しました。
Windows 98,Me,2000 ではセットアップ、実行とも正常でしたが Xp では
セットアップ時に "Error Path or File Not Found" が表示されてセットアップ
出来ません。ちなみに、この現象はセットアップウィザードでのアプリケーション
グループの登録の画面で 継続ボタンを押下した後に起こります。
Xp は対応していないのでしょうか?
開発マシンは Xp です。このマシン上ではもちろんセットアップも実行も出来ます。
938デフォルトの名無しさん:04/02/20 16:23
Windows APIの"GetMessage"を使いたいのですが
Msg構造体はTypeステートメントでどう定義すればよいのでしょうか。
どなたか教えて下さい。
>>939
Type POINTAPI
  x As Long
  y As Long
End Type

Type MSG
  hwnd As Long
  message As Long
  wParam As Long
  lParam As Long
  time As Long
  pt As POINTAPI
End Type
941939:04/02/20 22:30
>>940
ありがとうございます。
これからやってみます。
>>923
こういうイメージかな?

Form1は普通のフォーム、Form2はメニューを持ったフォームで。

  Private Declare Function SetParent Lib "user32" (ByVal hWndChild As Long, ByVal hWndNewParent As Long) As Long
  Private Sub Form_Load()
    Load Form2
    SetParent Form2.hWnd, Me.hWnd
    Form2.Show
  End Sub


まぁ、こんなことやってるアプリは絶対つかわないけどw
943鶏肉:04/02/21 14:38
WebBrowserコントロールを使ってCD内のビューアを作っています。
これで作ったソフトをCDに一緒に焼いて、配布しようと思っているの
ですが

このプログラムと同じディレクトリにあるindex.htmlをスタートページに
するためにはどのようにしたらよいでしょうか?

MDIアプリなため、ブラウザは子Windowの1つなのですが
Private Sub LoadNewDoc()
Dim frmB As New frmBrowser
frmB.StartingAddress = "index.html"
frmB.Show
End Sub

といった状態では取得できませんでした。
APIでビットマップのハンドル取得する方法はありますか?
945鶏肉:04/02/21 17:21
すみません。

GetCurrentDir()でカレントディレクトリを取得したものに + "index.html"
で成功しマスタ。
vb なら App.Path で済むと思うが。
App.Pathはルートディレクトリだと
C:\を返すが、それ以外だとC:\hogeと\が付かない(反対かも)
と言う問題があったな。
GetCurentDirは知らんが確認したほうがいいぞ

>>947
うん、反対。
>>947
それはOS上の"仕様"。Unixとかも一緒。
>>945
カレントディレクトリとアプリのあるディレクトリは違うぞ。
プログラム実行中にカレントディレクトリは変えることができる。
アプリのディレクトリならApp.Pathを使うように。
951鶏肉:04/02/21 22:06
>>950
それは、CDに一緒に焼いて、なおかつ不特定多数の人間に配布しても
きちんと動作しますよね?

でしたら、ちょっとやってみます。thanksです
952947:04/02/21 23:48
>>948
サンクス嘘教えるところだった。
自分じゃどっちも同じになるように加工して使うから忘れちゃう

>>949
そうなんだ。何でだろう?
>>952
PGの気分でしょ。
C:じゃそっけないし\もつけちゃえ、みたいな。
ヴァカでつか?
ルートは \ が無いと場所が特定できんだろw
956デフォルトの名無しさん:04/02/22 14:38
Windows2000で作成し、知り合いに動かしてもらったところ実行時エラー430が出ました。
知り合いのOSはXPです。インストーラで必要なものは入れました。
「クラスはオートメーションをサポートしていません。 」とのことですが
依存する何かのバージョンが古いからダメなんでしょうか?
下のような機能を使ってます。
DAOによるデータベース接続
(DAO3.6 Object Library)
(Data Formatting Object Library)
VoiceTextコントロール
FlexGridコントロール、
コモンダイアログコントロール、
Winsockコントロール
Tabbedダイアログコントロール,
Common Controls 6.0(SP4)
Common Control-2 6.0
ディストリビューションでインストーラ作成時
以下のものが依存情報が最新ではありませんと出ました。
comdlg32.ocx , msComctl.ocx , MSWINSCK.OCX
古い情報のままで進めるを選択しました。

こんなんでは参考になりませんでしょうか?
どなたかこれが原因てわかる方お願いします。
957953:04/02/22 14:53
各ドライブにルートディレクトリがあって…
んー、良くわかんね。windowsのファイルシステムでググってきまつ。_| ̄|○
958923:04/02/22 15:45
>>942
ありがとうございます。

思わず、「出来た!すげぇ!神降臨!」とか
口走ってしまいますた。
また壁にぶち当たったら質問させてください。
959鶏肉:04/02/22 15:48
この間は非常に助かりました。CDブラウザの開発はものすごく弾みが
付いております。

960デフォルトの名無しさん:04/02/22 19:11
教えてください。

[参照設定]のところで、
ADO(ActiveX Data Object 2.7)が参照不可になってしまっている場合、
どうすれば参照可になるのでしょうか?
関係ないけどさ、アドビのストリームラインが>>942みたいな感じだったな。
962デフォルトの名無しさん:04/02/22 20:22
java2sdkをインストールしたら、あるHPのネットゲームのページ開くのがものすごい遅くなってさ
コーヒマークみたいなんでてさ、文字もちょっとかわったし、あまりに遅いんで、
javaruntimeとjavaplug-inを削除したら、ふつうに開けるようになったんだけどさ
この二つはとくにいらないのか?学校の先生にきくとさ、runttimeはいるはずなんだけど
とかいって、あやふやにされたんだけど、ちなみにこの二つを削除しても、
ちゃんと、コンパイルもとうるし、コンソール画面で結果も表示されます。
この二つはなんなんですか?
削除してしまってよかったんでしょうかね?
ほかのすれでかいたんですけど、答えかえってこなくてよろしくおねがいします

>>962
インターネットオプションをいじればよかったのに・・・
>960
ADO2.7入ってないんじゃ?
965デフォルトの名無しさん:04/02/23 00:28
漠然とした質問ですみませんが、
システムエラーの原因の探し方ってありますか?
Microsoftに送信しても仕方が無いし。
>>645
VBで自分で作ったプログラムなら、エラーが起きるところに
開発環境を入れて試せば分かることが多い
>>965
コンパイルするときにデバッグ情報吐き出して、VCでデバッグする。
コールスタック見ることが出来るから、どこでエラーが発生したか
知ることができる。
VBでも見ること出来るけど、システムエラーになったらVBごと
落ちるからね。
>>967
詳しく
969966:04/02/23 01:48
>>645>>965の間違いね。間違えすぎ・・・
>>968
VB6ならプロジェクトのプロパティかなんかからコンパイルの仕方を設定して、
ネイティブコンパイルをONにし、デバック情報を出力とかそんな感じのところに
チェックを入れる。
>>968
プロジェクトの設定のところで、コンパイルのオプションにシンボリックデバッグ情報を作成
というチェックがあるから、それにチェックを入れてからコンパイルする。

出来上がったEXEをVCで開いて、デバッグ実行し、エラーが起きる操作を行う。
システムエラーが発生すると、問題のある個所でブレイクするので、一時停止したまま
VCでのデバッグ操作を行うことができるようになる。

そこで、メニューの表示>デバッグウィンドウ>コールスタックで、関数の呼び出し履歴を
確認する。
どの関数からの呼び出しが悪いのか分かれば、ある程度はデバッグの助けになると思う。

VBでデバッグできないエラーっつーと、NULLポインタへのアクセス、初期化されていない
ポインタへのアクセス、メモリの領域外参照なんかが主な原因かな。
VBでAPI使っている個所や、自分で作ったDLLが原因の場合が多い。
でもさ、VBでやってる場合、>>971の言うとおりのAPIとかDLL以外だとお手上げだよな。
973デフォルトの名無しさん:04/02/23 15:28
ActiveX EXEのプロジェクトで、スタートモードを独立型、
Sub Mainから起動するようにしています。
Sub Mainでは、フォームAを起動し、フォームAからフォームBを Show しています。

また、Publicなクラスを一つ持っており、外部からそのクラスのメソッドで
フォームBを Show するようにしています。

さて、クラスからフォームBを呼び出した時に、フォームAを表示したくないのですが、
今、どうしても Sub Main も動作してしまい、AもBも表示されてしまいます。
EXE単体で起動されたのか? それともクラスのインスタンスが生成されたせいで
Sub Main が動作したのか判断できないために、フォームAの表示を抑制できないのです。
この判断はどのように行えばいいのでしょうか。

なお、EXEとして実行された場合はコマンドライン引数をつけて区別することも
考えましたが、もっとスマートな方法がないかと考えている次第です。
また、実行ファイルを2つには分けたくありません。
974973
自己解決。App.StartModeで判別できました。スレ汚しスマソ。