VBプログラマ質問スレ(6.0以前) Part30
1 :
デフォルトの名無しさん :
03/11/18 21:53
2 :
デフォルトの名無しさん :03/11/18 21:54
IT業界にアージャイル開発とデザインパターンを広めよう! C言語を使ってかなり苦労したので その苦労を最小限におさえるために アージャイル開発、デザインパターンを 多くのプログラマに使って欲しいと思うことがある。 一種の挨拶みたいなものだね。 「なるべく挨拶を心がけましょう。」 「なるべき綺麗な字で書きましょう。」 のように デザインパターンを使うこと、アージャイル開発することが プログラマの習慣、常識になってほしい。 なんとか、デザインパターン文化、アージャイル開発文化を押し広げられたら・・・。 IT業界の将来はオブジェクト指向とアージャイル開発が握っています!
あげとk
う
6 :
デフォルトの名無しさん :03/11/20 03:32
ない
7 :
デフォルトの名無しさん :03/11/20 03:36
VBはプログラムではありません。 マクロ板いってください
8 :
デフォルトの名無しさん :03/11/20 03:45
>>7 CPUもコンパイラも開発したことがない人が勝手なことを言ってはいけません。
10 :
デフォルトの名無しさん :03/11/20 14:46
VB6で「新しいプロジェクト」をファイルメニューから選択し、「標準exe」を 選択すると、必ずProject1というプロジェクト名で既定のパスにプロジェクトが 作成されてしまいます。 任意のプロジェクト名で、任意のパスに作成したい場合はどのようにすればよろ しいのですか?
11 :
デフォルトの名無しさん :03/11/20 15:21
>>10 作られてはいなくないか?
保存時に指定すればOKじゃん。
12 :
デフォルトの名無しさん :03/11/20 15:28
>>11 *.frm, *.basなんかも全部別パスに保存するのですか?
VC4/5/6もC#.NETもVB.NETもプロジェクト作成時にパス指定するように
なってたのでよくわからんのです。
13 :
デフォルトの名無しさん :03/11/20 15:46
>>12 よく言えば、自由に配置できる。
まあいえば、自分で決める。
プロジェクトファイルをテキストで開けば判るけど、そのファイルからの相対でもってるから、
移動の時はそれごと移動。
14 :
デフォルトの名無しさん :03/11/20 16:20
>>13 なるほど。わかりました。ありがとう。
今までVBは使ったこと無かったんだけど、いきなり仕事で使わなきゃ
いけなくなって、面食らってるのです。
15 :
勉強2週間目 :03/11/20 16:26
どなたか教えて下さい。 変数にファイル名(ディレクトリパス)が設定されている場合に、 そのファイル名の拡張子の部分だけを収集したいのですが、 どのようにコーディングすれば実現出来ますでしょうか? 「file_name」が格納されている変数として…、 file_name = "c:\aaa\bbb\ccc\123.jpg" の場合は jpg file_name = "c:\aaa\bbb\ccc\123.jpeg" の場合は jpeg file_name = "c:\aaa\bbb\ccc\123.gif" の場合は gif file_name = "c:\aaa\bbb\ccc\123.xls" の場合は xls などという感じに情報を収集したいです。 よろしくお願い致します。
>>15 Dim Arr() As String
Arr() = Split(file_name, ".")
拡張子 = Arr(UBound(Arr))
17 :
勉強2週間目 :03/11/20 16:40
>>16 即レスありがとうございます。大変助かります。
さっそく書いて頂きましたコードを反映して動作確認してみます。
Cのポインタに似たようなことしたければ 配列なら配列名()で関数ならAddressOf 関数名でいいのかな? 普通の変数や構造体はどうするんだろ・・・うーん こういうCとの比較してるHPってないもんですかね?
あ、普通に変数名渡せば勝手に参照になるからいいのか
>17 UBound(Arr) <= 0 の時は、拡張子を取得できなかった ということになるから、気をつけてな。 (file_name = emptyの時は、UBound(Arr) = -1、 カンマ未発見の時は、UBound(Arr) = 0)
インターネット トランスファ (Inet)のExecute メソッドに HTTP プロトコルを指定して使用する場合に データを途中から取得する方法って有りますか? URLだけでもいいのでご教授お願いします。
pictureオブジェクトをAPIで使う方法ありますか? 何とかPictureオブジェクトからhDCを取得したいのですが。。。 GetDCとか使ってみたけどもうダメポ。
23 :
デフォルトの名無しさん :03/11/21 03:03
すみませんがどなたか教えてください。 OUTLOOKで受信トレイに今月の名前のフォルダを作成し、 その直下に今日の日付のフォルダを作成したいのですが Set olApp = New Outlook.Application Set olNameSpace = Outlook.GetNamespace("MAPI") Set olfolder = olNameSpace.Folders("個人用フォルダ").Folders("受信トレイ") olfolder.Folders.Add(month) この後どう書いていいのかがわかりません・・・ よろしく願いします。
24 :
勉強2週間目 :03/11/21 10:39
本日も質問してしまい大変申し訳ありません…。 10桁のランダムの数字と英小文字が入った文字列を設定したいのですが、 どのようにコーディングしたらよろしいのでしょうか? 数字のみですとrandomizeを使ってRndで収集のは分かりましたけど、 英文字も混在した方法はさっぱりです…。 ご協力して下さい。よろしくお願い申し上げます。
>>24 Private Function rnd_str(count As Integer)
Dim a As String
Dim i As Integer
Const c = "abcdefghijllnmopqrstuvwxyz0123456789"
Randomize Time
a = ""
For i = 0 To count - 1 Step 1
a = a & Mid(c, Rnd * Len(c), 1)
Next i
rnd_str = a
End Function
'やっつけソースなので正しく動くかどうかは知らん。
>22 hDCを取得して何をしたいんや? 確かpictureオブジェクトにはhDCがなかったと思ったんだけど…。 逆にPictureBoxにはhDCはあるけどさ。
28 :
デフォルトの名無しさん :03/11/21 11:01
>>22 最初からデバイスコンテキストで操作すればいいんじゃないのか?
そもそも、なぜpictureオブジェクトを使ってるか?って話がある。
30 :
勉強2週間目 :03/11/21 11:04
>>25 レスありがとうございます。
書いて頂きましたコードを反映+調整した結果、正常に収集出来ました。
大変感謝致します。
>>25 a = a & Mid(c, Int(Rnd * Len(c)) + 1, 1)
かな
Const c = "a"にして試してミヨ
32 :
デフォルトの名無しさん :03/11/21 11:24
実行メニューから「開始」や「完全にコンパイル後に開始」を選択したら 動作するのですが、ファイルメニューからexeを作成してエクスプローラで ダブルクリックするとクラッシュしてしまいます。 どうもCOMコンポーネントを呼び出しているところのようなのですが、 これはCOM側の問題でしょうか?
33 :
デフォルトの名無しさん :03/11/21 11:27
>>32 じゃないの?としかいいようがない質問だよ。
まず、そのCOMは自作?既製品?
プログラムの最初のFormLoadまで行けない状態?
プロジェクトを作成して、そのCOMをLOADするだけのEXEでも同じ?
>32 ありえないと思うが一応確認だ。 「完全にコンパイル後に開始」で実行しているパソコンと exeから実行しているパソコンが違うなんて事、ないよな?
35 :
デフォルトの名無しさん :03/11/21 11:34
>>33 そのCOMは自作です。VB.NETやC#.NETでは動作します。
先程は書き忘れましたが、VB6でWithEventsをつけ、
exeにしたときに特定のメソッドを呼ぶところでクラッシュするようです。
>>34 もちろん同じマシンです。
ありがとうございます。自分でも調査します。
36 :
デフォルトの名無しさん :03/11/21 13:28
Inetコンポーネントは全く小回りが利かない。 "wininet vb"でぐぐれ。
37 :
デフォルトの名無しさん :03/11/21 13:28
>>26 言葉足らずでしたね。bitbltとか使いたいです。
やっぱりpictureboxしかないでしょうか?
あとpaintpictureは重いらしいですし、あまり使いたくありません。
40 :
デフォルトの名無しさん :03/11/21 16:28
>>38 で、そもそもなぜにPictureオブジェクトを使ってるの?
そこまでするなら、イメージの読み込みからAPI使ってやって、自分でDC取ればいいじゃん。
そこまでするなら、VB使わなければ良いじゃんw
あー、何かややこしくなりそうですね。
素直にpicturebox使っておきます。
>>40 pictureboxは重いからpictureオブジェクトで
代用できるんじゃないかと言う短絡的な思考からです。
考えが甘かったようですね。
>>41 まぁそうなんですけどね。
今までに書いたコードの量が多くなって引くに引けない状況で。
>前スレ984 ご親切にありがとうございました。 取得した履歴の日付のDouble値をそのままString型に変換→ListItem.Tagに挿入し、 日付項目クリック時にListView.Visible = False、ダミーの項目を追加、ListItem.Tagの 格納値をCDate & Formatで強制2桁表示、SortKeyをダミー項目に設定の後、 Sorted = Trueにしてみたところ、上手くいきました。 かなりの件数があるときもあったんですが、それでもさほど非表示になったことが わからなかったです。 これで次の処理に進められます。ありがとうございました。
DAOでaccessのmdbにアクセスしてるんですけど closeって明示的にしないとだめですか? oo4oはしなくていいんですけど
しなくても事実上は問題ないだろうが、なぜそんな お行儀の悪いソースを書きたいのか知りたい。 つか、oo4oも「やらなくてもたまたま大丈夫」ってだけで、 ちゃんと開いたものは閉じるのが当然の作法だと思うが。。。
やらなくてもいいことをやるのが気持ち悪いんです。
そんなソースでDBアクセスしている環境を想像しただけで気持ち悪い。
わけわからずクローズするほうがキモイ
「なんかずっと最後にエラー出てたんだけど、 END入れたら出なくなったよ〜w」 って平然と話してたやつと同類っぽい。
「今日泊まりにいくね」と言っておきながら、時間を過ぎても来なくて 電話したら「忘れてた、もう遅いから行かない」 って平然と言ってのけるやつと同類っぽい。
>>48 みたいなやつに限って
エラーで異常終了するときだけは
クローズを省略する
機能が仕様通りでプログラムが正常に動作するならどっちでもいいよ
なんでもいいから教えてくれよ oo4oのcloseはダミーメソッドなんだよ。ヘルプに書いてある daoはどうなのか聞いてるんだよ。
>>55 わかるなら教えてやったら?
わからないんだろ? 正直に言おうよ。
質問です。 VB6なのですが、あるアプリケーションを作成し、 それを起動したら、最初に立ち上がるメニューバーを常に タスクバーのすぐ上に表示するようにしたいのです。 つまり、メニューバーのフォームがタスクバーに乗っかっている感じで。 しかし、自分のマシンで大体これくらいだなと数値を割り当てていても 他のマシンで立ちあげると少し上過ぎたり、 また、常にタスクバーは同じ大きさとも限りません。 人によっては2段にしているかもしれません。 そこで、もし現在のタスクバーの大きさがどれくらいで・・・っていうのを レジストリに持っていたらその場所を教えてください。 また、そのレジストリの値をVB6でどうやって読めばいいのかも 教えていただけると助かります。 よろしくお願いします。
>>57 タスクバーのウィンドウハンドルを取得して
サイズを(σ・∀・)σゲッツ!!!! すればいいのでは?
>>58 すみません、ウィンドウハンドルとは何でしょうか?
初歩的なことなのかもしれませんが・・・
DirectSoundを使用してwavファイルをループ再生したいのですが、ループに入る前に イントロの部分だけ別のwavを鳴らしたいんです。 A=イントロのwav B=曲 Aを再生→Aのwavファイルの再生が終わったら間髪入れずにBを再生→以後Bが終点に来たらBをループ ってな感じです。 そこで、Aのwavファイルの再生終了を判定する方法が分かりません。 どなたか良い知恵をお貸しください。 #前スレでも質問しましたが回答がなく未だに困っているので、もう一度質問させていただきました。
>>61 俺は使ったことないからわからんが、
演奏してるかしてないか入れとくプロパティはないの?
気分としてはStatusとかPlayingって感じのやつ。
>>62 そうなんですよ。演奏中であるか否かが判定できれば容易だと思うんですけど…。
探して見た感じ見つかりませんでした。
探し方が悪いのかな…。
どなたか知りませんか?
65 :
デフォルトの名無しさん :03/11/24 06:04
コンボボックスで、選択項目を削除したいのですが、どうすればよいでしょう…?
>>65 Combo1.RemoveItem Combo1.ListIndex
ありがとうございます。
68 :
デフォルトの名無しさん :03/11/24 16:39
formAとformBの間で、配列のデータを したいんですが、どうのようにすればいいんでしょうか? よろしくお願いします。
69 :
デフォルトの名無しさん :03/11/24 16:40
formAとformBの間で、配列のデータ交換をでした。 すいませんが、お教えください。
70 :
デフォルトの名無しさん :03/11/24 16:41
検索や過去ログを見ても欲しい回答が無かったので質問させて頂きます。 タグブラウザを作っているのですが、 webbrowser1.navigateの際、IEのProxyがそのまま適応されてしまうのですが、 IEとは別にProxyを仕様することは可能でしょうか? winsockやInetを使用してソースを取得、webbrowserに表示も考えてみたのですが、 その場合だとリンクが狂ってしまったりするので やはりwebbrowserで無いとダメっぽいのですが・・・ よろしくお願いします。
73 :
デフォルトの名無しさん :03/11/24 16:52
>>71 さん
form間のデータ交換じたいが
わからないんですが、お教え願えないでしょうか?
74 :
デフォルトの名無しさん :03/11/24 16:52
>>70 IEコンポーネントを生成する直前で、Proxyの値を書き換える。
生成したら元に戻す。
>>73 Public 宣言しときゃいいんじゃなかったっけ ?
76 :
デフォルトの名無しさん :03/11/24 17:00
>>74 回答ありがとうございますm(_ _)m
IEコンポーネントを生成のやり方が分からないので、
詳しくは分からないのですが、
その場合ですと、HP閲覧途中などにProxyを変更するのが無理なのではないでしょうか?
77 :
デフォルトの名無しさん :03/11/24 17:29
>>76 IEコンポをフォームに貼り付けるんじゃなくて、
オブジェクトの参照だけにしておいて(参照設定の方)、
下のようにやればオブジェクト生成される。
Dim IE As SHDocVw.InternetExplorer
Set IE = CreateObject("InternetExplorer.Application")
オブジェクト生成時にIEのインターネットオプション設定が
読み込まれるみたいなので、その直前に書き換えておけばいい。
もっといいやり方があるかもしれないけど、俺はこれしか知らん。
78 :
デフォルトの名無しさん :03/11/24 17:53
>>77 なるほど・・・
この方法ならちゃんとProxyの設定もうまくいってますね。
でもやっぱりフォームに貼り付ける様な形で作りたいので続けて質問させて頂きます。
77さん、すみませんm(_ _)m
とりあえずwebbrowserを動的に作成しようと思って、
Private WithEvents oIE As WebBrowser
Private Sub Form_Load()
Set oIE = Form2.Controls.Add("Shell.Explorer.2", "oIE") 'SHDocVwCtl.WebBrowserではダメでした
oIE.Left = 400
oIE.Top = 100
oIE.Width = 2000
oIE.Height = 400
oIE.Visible = True
End Sub
としてみたのですが、
エラー(プロジェクト プロパティのダイアログボックスの使用していないActiveXコントロールの情報を削除するのチェックを外してください。)が出ます。
探してみたのですが、見あたらないので、どこにあるのか教えてください。
79 :
デフォルトの名無しさん :03/11/24 18:21
>>72さん ありがとうございました。 なんとかできましたm(_ _)m
>>78 "プロジェクト(P)"→"[プロジェクト名] のプロパティ(E)..."→
"実行可能ファイルの作成"→"使用しない ActiveX コントロールについての情報を削除する(E)"
81 :
デフォルトの名無しさん :03/11/24 19:29
>>80 普通に見落としてましたね・・・(汗
くだらない質問にお答え下さってありがとうございます。
おかげさまで動的にwebbrowserを作成は出来たのですが、
なぜかProxyを変更しても適応されませんでした・・・(汗
どうすればうまくいくのでしょうか?
はじめまして、自力でいろいろページ探したのですが、 解決できないので、質問させていただきます。 ShapeコントロールでPictureBox上に長方形を描き、その上に透明のLabelを貼り付け Labelをドラッグすると下のShapeが一緒に動くようにしているのですが、 ドラッグをするとノイズ(ビリビリ横に線が入る)が発生し、移動するオブジェクトを大きくすれば するほど、そのノイズが目立ってしまいます。 ちなみにオブジェクトを半透明状態にしたいので、MaskPenのあるShapeに色をつけて、 FillStyleをMaskPenにし、上に透明Labelを貼り付けるという強引な方法をとっています。 もう1つ、ウィンドウズでよく使う縄(範囲選択するための半透明の正方形)を実装したいのですが やはりこちらもノイズが入ってしまいます。 こちらのほうもMouseDownで開始座標,終了座標を変数に格納し、shapeを表示 MouseMoveで適した形,大きさにshapeを移動するようにしています。 ノイズを消す良い方法があればご教授願いますm(_ _)m
>>82 ディスプレイドライバの不具合の可能性もアリじゃない?
色々なPCで試してみた?
>>64 まさにそれですね。
ありがとうございます。m(_ _)m
仰せの通り、VBではないようですが、使い方などを試行錯誤してみます。
もし知っている方がいましたら、ご教授願えると幸いです。
>>81 プロキシ変更ヒント。
適当に切り貼り。適当に組み合わせて調べて使ってくれ。
そういえば、IDEからだと動かなくて、EXEだと動いたことがあったような解決したような。もう忘れた。
Proxy←プロキシのアドレス
If Trim(Proxy) = "" Then
ipi.dwAccessType = INTERNET_OPEN_TYPE_DIRECT
ipi.lpszProxy = 0
ipi.lpszProxyBypass = 0
Else
ipi.dwAccessType = INTERNET_OPEN_TYPE_PROXY
ipi.lpszProxy = StrPtr(StrConv(Proxy, vbFromUnicode)) '←なんかもっといい書き方ありそうだけど手抜き
ipi.lpszProxyBypass = 0
End If
If UrlMkSetSessionOption(INTERNET_OPTION_PROXY, ipi, LenB(ipi), 0) = 0 Then
'成功
Else
'エラー
End If
定義とか。足りないのあるかもな〜。 Public Declare Function UrlMkSetSessionOption Lib "urlmon.dll" _ (ByVal dwOption As Long, pBuffer As Any, ByVal dwBufferLength As Long, _ ByVal dwReserved As Long) As Long ' ' INTERNET_PROXY_INFO - structure supplied with INTERNET_OPTION_PROXY to get/ ' set proxy information on a InternetOpen() handle ' Public Type INTERNET_PROXY_INFO ' ' dwAccessType - INTERNET_OPEN_TYPE_DIRECT, INTERNET_OPEN_TYPE_PROXY, or ' INTERNET_OPEN_TYPE_PRECONFIG (set only) ' dwAccessType As Long ' ' lpszProxy - proxy server list ' lpszProxy As Long ' ' lpszProxyBypass - proxy bypass list ' lpszProxyBypass As Long End Type Public Const INTERNET_OPEN_TYPE_PRECONFIG As Long = 0 'use registry configuration Public Const INTERNET_OPEN_TYPE_DIRECT As Long = 1 ' direct to net Public Const INTERNET_OPEN_TYPE_PROXY As Long = 3 ' via named proxy Public Const INTERNET_OPEN_TYPE_PRECONFIG_WITH_NO_AUTOPROXY As Long = 4 ' prevent using java/script/INS Public Const URLMON_OPTION_USERAGENT As Long = &H10000001 Public Const URLMON_OPTION_USERAGENT_REFRESH As Long = &H10000002
おまけ。USERAGENTをかえるサンプル。 Dim UserAgent As String UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)" If UrlMkSetSessionOption(URLMON_OPTION_USERAGENT, ByVal UserAgent, LenB(UserAgent), 0) = 0 Then '成功 Else 'エラー End If
自己レス。 >ipi.lpszProxy = 0 >ipi.lpszProxy = StrPtr(StrConv(Proxy, vbFromUnicode)) '←なんかもっといい書き方ありそうだけど手抜き この部分って、 Type INTERNET_PROXY_INFOのlpszProxy As LongをlpszProxy As Stringにして、 ipi.lpszProxy = Proxy ipi.lpszProxy = vbNullString と書けば動くはずだよねぇ。 こうやっていたときだったかなぁ。IDEからなんかおかしかったの。 作っていたのが特定サイト専用俺個人用ツールで、サイト更新で 今つかえなくなっているので試す気がおこらない。 あと、これレジストリとか変えるわけじゃないので終了処理とかはいらない。 コメントのproxy server listが気になる・・・。なぜにアドレスじゃなくリスト?
>>83 なるほど。今グラボを修理にだしていて、GF2MXを臨時で使っているので、
グラボが修理から戻ってきたらドライバいれて確認してみます。
(他のコンピュータを持っていないため)
これはVBのバグ(というかVBがグラフィックに弱いの)かと思っていましたが、
そうでは無いようなので、安心してこのまま続行してみます。
どうもありがとうございましたm(_ _)m
>>89 なんか妙な方向でまとまってそうなので言っておくが、
VBでコントロールを動かしまくるとフリッカが出るのはバグとかそういう類のものじゃない。
リアルタイムに動かすものは、コントロールなんか使わずに自前で書くべき。
範囲選択ツールも、普通はLineメソッドなんかを使って直接PictureBoxに描く。
ご指摘ありがとうございます。 いま作っているものはオブジェクトを右クリックすると「色の変更」などの右クリックメニューが出る ようにしていて、かつ、ドラッグするとそのオブジェクトを動かすことができるように しています。 クリック、などのイベントは直接書き込んだオブジェクトでは発生させられないため、 透明ラベルを貼り付ける方法を思いついたのですが、この様な方法をとらずに同じようなことは可能でしょうか? 範囲選択ツールは直接描く方法でやってみます。
オブジェクトの位置情報を中で持っといて、ピクチャボックスにClickイベントが発生したときに位置を比較してメニュー表示とか。 面倒だろうが、まぁガンガレ。 #ちらつくのは仕様だと言い張って楽するのもありだぞ
っと、Clickイベントじゃマウスの位置取れないか。訂正。 コンテキストメニュー出すんなら、MouseUpイベントで処理すべきだな。
95 :
デフォルトの名無しさん :03/11/26 00:30
>>85 回答ありがとうございます。
早速試してみたのですが、エラーが出てしまいます(汗
ヘルプを見たり検索してみたのですが、
なぜエラーが出るのか分からなかったのでご教授お願いしますm(_ _)m
変更した点は、
モジュールに
Public ipi as INTERNET_PROXY_INFO
を足したのだけです。
Form1にwebbrowser1を貼り付けてます。
If UrlMkSetSessionOption〜〜のところで、
INTERNET_OPTION_PROXYの値がEmptyになっているので、それが原因な気がしますが、どうなのでしょうか?
よろしくお願いします。
>>95 あ〜。マジで抜けてたね。俺んとこはCのWININET.Hファイルから半機械的に変換した
モジュールを使っているから、長くて必要なとこだけ取り出したつもりだったんだけど。
Public Const INTERNET_OPTION_REFRESH As Long = 37
Public Const INTERNET_OPTION_PROXY As Long = 38
この部分で必要なのはもうないと思うけど、これ関連でなんかやりたいときは
WININET.Hを見てくれや。なんか興味深い定数もあるしね。
97 :
バレーボーラー :03/11/26 00:58
はじめまして、いきなり質問です Dim i As Integer i = 1 Controls("Text" & i).Text = "ok" みたいに Text1.text="ok" の1の部分を変数に変えるように Dim objDocument As Object 'As MSHTML.HTMLDocument Dim objForm As Object 'As MSHTML.HTMLFormElement Set objDocument = IE.Document Set objForm = objDocument.Forms(0) objForm.ID.focus のIDの部分を変数に変えるにはどうしたらよいでしょうか?
98 :
デフォルトの名無しさん :03/11/26 01:03
>>96 ありがとうございました!!
おかげさまで無事思った通りのことが出来ました。
ごめんなさい、誤爆です
>>99 はスルーしてください
101 :
PC初心者 :03/11/26 09:18
お願いです。 VBとアクセスで作ったあるソフトが手元にあるのですが ノートPC全般で一部機能が働きません。デスクトップでは まともに動いていた代物なんですが。。。 しかも、インストーラーが入ったCDを紛失してしまい、 そのソフトはノートPCにしか現在ない状態です。 ノートPCからソフト本体と目に見えるフォルダーをコピー したのですが当然動きません。 初心者なので非常に困っています。 作成した会社には連絡が取れずじまいです。 東京都近辺で実際にそのノートPCから吸い出してインストーラーの 作成まで面倒みてくださる神様はいらっしゃいませんか? もちろんお礼はいたします。よろしくお願いします。
102 :
VB初心者 :03/11/26 09:35
VB-5.0を使用しておりまして、質問があります テキストボックスで40X2byte(改行無し)の入力部を作成しようと想っています。 "MultiText=on"に設定して、2行以上に表現する事が出来るのですが、1行40文字で 次の行へ行かず、勝手に改行されてしまいます ---------------------- |aaaaaaaaaaaaa bbbbbb| |bbbb cccccccc dddddd| | | ---------------------- と表示させたいのですが、 ---------------------- |aaaaaaaaaaaaa | |bbbbbbbbbb cccccccc | |dddddd | ---------------------- と表示してしまう また、バイナリモード入出力で、2バイト文字・1バイト文字の含んだ文字列を80byte 扱いたいのですが、固定長80文字で取得しようとしたら80byteではなく、80文字分 扱う感じになってしまいます。 固定長byteの入出力を行うにはどのようにすればよいのでしょうか
103 :
デフォルトの名無しさん :03/11/26 09:49
>>101 その手段ではライセンス違反になるので注意を。
VBのランタイムなどの再配布は統合開発環境があることが前提のはず。
その他のOCXとかも個別にある。
インストール先のPCからそれらのファイルを抜き出して再配布することは問題です。
104 :
デフォルトの名無しさん :03/11/26 09:52
>>102 TextのChangeかKeyPressかで入力値を判定。
VBは内部的な文字扱いはUNICODEなので、文字はバイトじゃなくて文字数で数えます。
バイト長が欲しい場合はStrConvしてLenBする。
その辺りは前スレにも出てたように思うのでそれを参照。
>>101 お礼ってなんだよ
普通に有償。あたりまえだ!
>101のお礼=鳩サブレ(\1,000)
>>101 10万+実費で、「動くようになるまで」。必要機材はそちらで用意。
もし3日かけても動かなければ、なにも要らない。
インストーラ作成までやるなら、これぐらい当然だろう。
本気なら捨てアド晒せ。なお、こちら浜松町。
108 :
デフォルトの名無しさん :03/11/26 11:09
VB6.0には配列の初期化構文というのは存在しないのですか? とある配列データを定数として持ちたいんですが ひょっとして一々代入しないといけないのか?
>>108 その通り。なお、変数の初期化構文さえないぞ。
>>109 やっぱりそうなの?面倒くせー。
572バイトのバイナリデータなのに・・・。
>>110 単にファイルとして持てばいいんじゃないのか?
別ファイルにしたくないならリソースファイルにするとか。
どっちもめんどいけどなー。
>>111 そうします。
hoge.binってファイルを作って
Form_Load時に読み込ませる事にします。
VB.Netだと配列初期化構文用意されてるみたいだね。
114 :
デフォルトの名無しさん :03/11/26 13:42
ディレクトリ名の取得の質問です。 ディレクトリには物理ディレクトリ(c:\windows等)と 論理ディレクトリ("マイコンピュータ"等)がありますが、 論理ディレクトリ名を取得する関数はあるんでしょうか? 例えば、 path = Dir("デスクトップ", vbDirectory) などとすれば、"デスクトップ"以下の論理ディレクトリが取れるような APIが知りたいのです。 ご存知の方いませんか?
>>113 CD-Rに焼きたいのにドライブがないだのメディアがないだのって場合とか
場合によってはインストーラー作成用ソフトを購入しなきゃいけないとか
現地までの交通費とか いろいろあるでしょーが。
必要機材ってのは、ノートと該当デスクトップを接続するLAN環境だの
インストーラー作成に使用するマシンだのって意味だよ。
なにもそのへんにかこつけて、法外な要求しようってわけじゃない。
つか、そもそも元発言者なのか?
ここまで反応がないから、多分諦めたんだとおもうが。
>>115 101は本当に鳩サブレ程度のお礼のつもりだたそうです
それでやってやるやつがいたら、本当に神様だなw
119 :
デフォルトの名無しさん :03/11/26 17:32
>>116 ありがd。
作りたいのはファイラーのようなツールなのですが、
IShellFolderインターフェースがらみで何とかなりそうです。
120 :
デフォルトの名無しさん :03/11/26 19:52
VB6.0で「通常使うブラウザ」として設定しているブラウザを開く場合はどうすればよいのでしょうか。 過去ログにIEを開くものはありましたが、Mozillaやその他のブラウザでも開けるようにしたいのです。
自己解決しますた。 ありがとうございました。
>>120 関連付けされたファイルならshellでhtmlを開けばいいけど、
これって、Win2kのアプリケーションの追加と削除の所にある、
既定のWebブラウザを使う と同じものなのかなと思ったり。
123 :
PC初心者101 :03/11/27 09:34
著作権やライセンスの問題は大丈夫です。
当方で依頼して作成してもらったソフトで権利もこちらにあります。
が、作成した会社がないのです。
実費とは概ねどの程度なんでしょうか?
現在そのソフトが入っているノートPCをお渡ししますので
そこからデスクトップにインストール出来るような状態にしてほしいのです。
初心者なのでよく分かりませんがよろしくお願いします。
浜松町までお持ちしますので一度ご連絡ください。
[email protected]
誤爆?
>>123 >著作権やライセンスの問題は大丈夫です。
何もわかっちゃいねぇな。
>>125 契約の内容によっては著作権侵害になるとは限らないぞ。
128 :
PC初心者101 :03/11/27 10:04
なんにも分からず申し訳ありません。
>>123 >>125 も書いたけど、わかってないかな?
VBとかあるの?それが無くて開発されたソフトがあってもしょうがないんですよ。
最初の開発時につかったソフト会社がランタイム等の配布権をもってるわけで。
あなたのノートに入ってるMSなんかが作ったDLLを再配布する権利はあなたに無いです。
130 :
デフォルトの名無しさん :03/11/27 10:06
あと、純粋なVBランタイムだけならVectorとかでランタイム配布がある。 あれの場合、ダミーのアプリをインストールする名目でランタイムを入れるからOK。
フォームだけのアプリでもいいわけで
ランタイムは別途にインストールすればいいだけじゃん。
ねぇねぇ! ランタイムライブラリってスタティックリンクできないの?
>>132 VBのランタイムはね。
101のアプリが市販のカスタムコントロールを使ってる場合とか問題だし。
そもそも、その調査自体を頼んでる割には・・・だし。
仕事でやるなら調査だけでも1人日欲しいよな。
いや、APIなんかはどっちみちスタティックリンク出来ないし。
136 :
デフォルトの名無しさん :03/11/27 10:21
>>133 煽り?それが出来ればVBの問題の70%は解決できるんだけどね。
あとの30%はクラスの仕様。
.netになると、別にVBじゃなくてもってなるし。
>>134 何も分からんのに、カスタムコントロールの調査をしてくれと頼めるか?
>>136 煽りじゃないYO!
・・・やっぱり出来ないんだ。
>>133 サイドバイサイドを使えば、スタティックリンクしたのと同等になる。
VBも内部でLINK.EXEをよんでいる。 コンパイラにちょっと細工をすればスタティックリンクも可能。
142 :
デフォルトの名無しさん :03/11/27 10:34
>>141 VC98\BinフォルダにあるLINK.EXEと全く同じ物がVB98フォルダにもあるね
oo4oを使っています。 2万件のデータのなかからどれでもいいので1件選択して データを取得したいのですが、sql でminやmaxをすると 時間が掛かってしまうのですぱっと1行選択する方法はありますか?
144 :
デフォルトの名無しさん :03/11/27 13:38
>>143 そのSQLが悪い。SQLを磨け。または設計がだめだめかもしれないから、再設計しろ。
oo4oはミドルウエアだから、あんたの意図を察して1件だしてくれるものではない。
あくまで仲介役。
糞な設計、SQLで直せないなら2万件程度なら全件持ってきて判断しても大丈夫じゃないの?
147 :
デフォルトの名無しさん :03/11/27 13:42
>>145 しらないんじゃなくて、無いって教えてるんだろ?アホか?
ROWNUMがあるじゃん
149 :
デフォルトの名無しさん :03/11/27 13:47
>>148 ROWNUMはORDERBY前の順序でしょ?
その場合、その集合をFROMに入れてさらにってなるからめんどい。
>>149 どれでもいいならいいんでない?
151 :
デフォルトの名無しさん :03/11/27 13:56
>>150 いや、細かくなるけど全件検索してしまう可能性があることなどあるから、
SQLレベルできちんと分析(実行計画見て)をやってチューンすべき。
INDEXなど使われてピンポイントで行けるなら、劇的に早くなるけどね。
っていうか、どれでもいいのか元題の要件は?
ありがとうです。 とりあえずROWNUMとうのが出たのでやってみます。
3万件の中から1しゅんで取得できました。ありがとう。
ありがとう。そしてさようなら。
また来ます
>>155 そういうときは、もうこねーよのAAだろ?
まあ、3万程度なら力技でもなんとかできるからがんばってね。
テストだと綺麗なデータで数千とかでやっちゃうことが多いから、それだとボロがでないんですよね。
数万から数十万でやるとさすがに下手なSQL書くと結果に現れる。
ミドルウェアでどうにかできるのは、バッファをどう持つかとかダイナセットをどうするかとかの設定ぐらい。
根本的な検索はSQLを突き詰めるしかない。
157 :
勉強3週間目突入 :03/11/27 14:48
HTMLのページでチェックボックスで選択された複数の内容を ASP側で配列として受け取りたいのですけど、どうすれば実現できますでしょうか? HTML側のプログラムでは、 <form method="post" action="test.asp"> <input type="checkbox" name="user" name="taro">太郎 <input type="checkbox" name="user" name="jiro">次郎 <input type="checkbox" name="user" name="hanako">花子 <input type="submit" value="実行"> と作っています。 受け取り側のASPではname_listという配列を作って、 配列番号の0からチェックボックスで選択された内容を書き込みたいです。 太郎と花子の2つが選択されたらname_list(0)に"taro"、name_list(1)に"hanako"が入って欲しいのです。 どなたか実現の方法がおわかりの方がいらっしゃいましたら、 サンプルのプログラムを掲載して頂けると助かります。 よろしくお願い申し上げます。
158 :
デフォルトの名無しさん :03/11/27 14:56
フォルダの変化を監視&自動でファイル名変更するツールを作ってます。 「FindFirstChangeNotification」を使って「CHANGE_FILE_NAME = &H1」にして あとは「WaitForSingleObject」で待っています。 殆どの場合、コレでも動いたのですが、変化(追加)されたファイルをイヂろうと した時(ファイル名変更等)に、ファイルが未だコピー中だったりすると怒られて しまいます。 つまり監視中のフォルダに大きなファイルをコピーしてきた場合なんかに まだコピー中でも、「FindFirstChangeNotification」は新たな変化ハケーンしたと 通知して処理が戻って来ちゃいますよね。 大きなファイルでもコピーが完了した(=ファイルが最後まで書き込み完了) 時を知る方法は無いでしょうか? # 監視フォルダに連続してファイルが来る可能性もあります。。。 宜しくお願いします。
>>158 そのAPIって役に立たないよね。ほんと。
どなたかお願いします。 PictureBoxとボタンがあって、 そのボタンを押すごとに画像が少しずつ拡大されるようなプログラムを探しています。 できれば、縮小もお願いします。
143ってなんか愉快な奴だなw
>>160 は、
さすがに入門書を読めと言いたくなる質問だな
163 :
デフォルトの名無しさん :03/11/27 21:10
Outlook Expressで読める、拡張子がemlのファイルの構造がわかるサイトを 教えてください。 お願いします。 目的は、Accessのmdbファイルにメールを取り込むためです。
>> 163 emlだとPOPサーバから取得したままの原文だと思う。 メール関係のRFC読み漁ってみたら? 処理するメールの書式が決まってるなら 普通のテキスト文書とみなして処理できると思うけど 完璧に対応したいっていうなら 素人が手を出せるもんじゃないと思うよ。 (メーラーを作るのと大してかわらん)
>>161 143を騙って名前に143と入れたまま、
違う奴を煽ってしまったんでしょw
167 :
PC初心者101 :03/11/28 08:30
168 :
デフォルトの名無しさん :03/11/28 09:35
>>163 >>164 の言うとおり、emlは受信内容をそのままテキスト保存しただけのもの。
本文の漢字コードは通常JISコードを使用している。
ヘッダ中の日本語はJISコードをさらにbase64エンコードしている。
添付ファイルもbase64エンコードされたものがメールの最後に付いている。
マルチパート(text, html混在)の奴はtext部分の先頭とhtml部分の先頭に
区切り文字列が入っている。
などなど。結構ややこしい。
漢字コード変換やbase64デコードのフリーライブラリやソースは探せばあるよ。
169 :
デフォルトの名無しさん :03/11/28 17:18
フォームにPictureを貼り付けてその四隅をマウスでドラッグ&ドロップして Pictureのサイズを自分でいじれるようにするにはどうしたらいいですかね? どなたか教えてください
170 :
VenBen :03/11/28 19:24
>>169 SetWindowLong使うのが一番簡単です。
あとはググってクレ
>>157 --- 送り側 ---
値はnameじゃなくてvalue。nameはこんなかんじにする。
<input type="checkbox" name="Checkuser1" value="true">太郎
<input type="hidden" name="user1" value="Taro">...
hiddenを使って、inputの数をあらかじめ所得しておく。
<input type="hidden" name="icount" value="3">
--- 受け取り側 ---
dim ArrayNum
dim NewArray()
dim iNum
redim NewArray(Request.Form("icount"))
'配列するときに使う
ArrayNum = 1
'icountの分だけ繰り返す
for i = 1 to Request.Form("icount")
'チェックの入ったものはtrueになる。それ以外はもちろんfalse
if cbool(Request.Form("Checkuser" & i))=true then
NewArray(ArrayNum)=Request.Form("user" & i)
ArrayNum = ArrayNum + 1
end if
next
'これで確認してみてね
for iNum = 1 to ArrayNum-1
Response.Write NewArray(iNum)
next
173 :
室長 ◆VVVF/Nq4YU :03/11/28 22:01
TabStripの使い方が、ドコ探しても殆ど載ってなくて、全く分からないので教えてください とりあえずボタンとかどうやって置けばいいんすか? よろしく頼む
174 :
VenBen :03/11/28 22:20
XPのテーマに対応させるとコンテナがフレームだとおかしくなっちゃうから ピクチャボックスを進めておく
エクセルに入っているVBAで、九九の掛け算の答え(1×1〜9×9)を表示させる プログラムを教えてくれませんか? 1 2 3 4 5 6 7 8 9 2 3 4 5 6 7 8 9 かける数を指定して、その交わる部分に掛け算の答えが表示されるように したいのですが、どうしても完成できません。 ご存知の方、よろしくお願いします。
177 :
デフォルトの名無しさん :03/11/29 00:05
>>172 答えになってないんじゃない?
'** form パラメタ取得(全件)
for each rq in request.form
response.write(rq & "<BR>")
response.write(request.form(rq) & "<BR>")
next
これでなんとなくわかるでしょ?
179 :
デフォルトの名無しさん :03/11/29 00:27
>>176 Sub kuku()
Dim ws As Worksheet
Dim i As Integer
Dim j As Integer
Set ws = ThisWorkbook.ActiveSheet
For i = 1 To 9
ws.Cells(i, 1).Value = i & "段"
For j = 1 To 9
ws.Cells(i, j + 1).Value = i * j
Next j
Next i
Set ws = Nothing
End Sub
>>179 おおおお!! ありがとうございます!!
本当に助かりました。
VBでCD-Rライティングソフト作りたいんですけど・・・ どなたか作った方いません? APIでどうにかなるレベルのものなんでしょうか。。。
182 :
デフォルトの名無しさん :03/11/29 07:21
textbox1 ← IPアドレスを入力 botton1 ← クリックするとtextbox1に入力されているIPアドレスに向けてpingを撃つ textarea1 ← 上記結果を表示する というプログラムを作りたいのですが、botton1にはどんな記述をすればよい のでしょうか?すいません教えてください。
>>182 少しは検索したら。vb ping でgoogleしろ
184 :
デフォルトの名無しさん :03/11/29 11:14
VB6.0です。 DataGridのスクロールバーですが、データの表をはみ出して 表がない部分までスクロールします。 なんとか表が表示されている部分でスクロールの最後とすることは できませんでしょうか?
VB6.0です。 コーデエディタウィンドウでマウスホールをクリックしても ↑↓スクロールができないのですが、何故でしょうか?
>>186 あ、なるほど、ホイールを入れるんですね。
わかりません。
Google "どこでもホイール"
VB6.0+Access2000+SPREAD Ver6.0Jで参加している団体のMLの データベース化を進めています。 投稿数が1万件あって、そのフォームをSPREADで表示しようと フォームを作成してそれを開こうとすると30秒以上かかってしまいます。。。 こういう場合は、どうすればいいのでしょうか?
>>189 メモリを増設するか、表示件数を絞り込んで少なくしろ。
191 :
デフォルトの名無しさん :03/11/29 18:55
>>189 「只今処理中です・・・」 を出しておけば?
>>190 現在、ノートPC(セレロン700MHz、512MB(MAX))です。
表示件数の絞りこみですか。。。
>>191 つらいです。。。
>>192 メモリが512Mがあれば十分かと。
あとは表示するまでの時間と表示件数のトレードオフしかないだろ。
セレロン700でAccessDBファイルから1万件抽出表示かぁ。。。 やっぱり多少時間はかかるよね、それ。 MySQLとかじゃダメなの?
>>193 今きっちりはかってみたところ、11403件が51秒でした。。。
SPREADにVirtualModeがあるんですけど、
それを使ったほうがいいんでしょうか?
>>194 > MySQLとかじゃダメなの?
使ったことがないのでなんとも。。。
会員データとかAccessで作ってしまってるんで
その流れでいきたいです。
メーリングリストって大勢が使うものだから SQL Serverじゃないとダメ
>>197 一度、VirtualModeを使ったんですけど、
勝手がうまくいかないし、垂直スクロールバーの操作が
しっくりいかなくってやめたんです。。。
アドバイスを参考に1から考えてみます。
ありがとうございました。
>>200 JETエンジンが同時接続1で、MSDEを使うと5に増えるだけだ。
>>198 ド素人ですいません。この場合、AccessとSQL Serverの違いって何ですか?
オブジェクト指向なんて役に立たないと思う。
>>202 このスレにはその質問に答えられる人がたくさんいるけど、
説明はそれなりに長くなるから
同時接続が起こる場合はSQL Severを使用するようにみんなは言うだけにとどめることだろう。
本やインターネットを読んでいるうちにわかってくる。
マイクロソフトはソフトの格付けをするためにわざと製品同士に性能差をつけているからAccessもSQL Serverも値段の違いが機能の違いになっている。
なぜ性能が違うのかというと販売戦略によりわざと性能差がつけてあるだけだ。
205 :
デフォルトの名無しさん :03/11/30 01:54
ひらがな・かたかな・漢字が混じっている文章を ローマ字に変換してくれるような APIを作っている神様をご存知ありませんか?
>>205 作るもなにも、IME関連のを呼び出せば変換できるんだが。
オマエら、 ブラウザのアドレス欄に、ファイル名称を表示させない方法、 知らね〜だろ。 大手サイト作ってる奴しか知らないワナ♪
漢字は音訓読みがあるから完全に正しい変換は難しいな
209 :
デフォルトの名無しさん :03/11/30 06:52
ImplementsしているクラスをさらにImplementsしたいのですが とりあえず↓のようにしてやってみましたがうまくいきません。(つまりわかってない なにか良い方法はありますでしょうか? 'clsA Public Sub Method() ... End Sub 'clsAA Implements clsA Private Sub clsA_Method() Me.Method End Sub Public Sub Method() ... End Sub 'clsAAA Implements clsAA Private Sub clsAA_clsA_Method() Me.Method End Sub Private Sub clsAA_Method() Me.Method End Sub Public Sub Method() ... End Sub
>>209 委譲使うしかないよ。
C++のそれと同じものを期待しているなら無理。
211 :
デフォルトの名無しさん :03/11/30 07:39
【Shell()について】 Shell() は非同期で引数のプログラムを実行するとリファレンスにありますが、 VB(6.0)で作ったファイルをコピーするexeを実行すると、 ファイルコピーが終了するまでブロック(同期)してしまいます。 これはなぜなのでしょうか。また回避方法はありますでしょうか? #ちなみに、ノートパッドを実行すると確かに非同期でした。 どなたかよろしくお願いします。
はてな
http://www.hatena.ne.jp/1070065952 VB6で使用可能なアイコンファイルの制限について。XP用の32bitアイコンが使えるのか。色深度、解像度、複数混在の場合の挙動など。
質問者:kiichigo (8) 回答ポイント:130ポイント 質問日時:2003/11/29 09:32:32
質問ID:1070065952 閲覧済み:
現在の状況:回答受付中 回答件数:
カテゴリ:コンピュータ
214 :
デフォルトの名無しさん :03/11/30 19:39
>>202 Accessは軽自動車。
MSSQLは中央線。
まぁ、そんなカンジだ
>>215 そいつはすまなかった。
釣られ覚悟で言うが、もうちょいスレに沿った事は言えないか?
教えてください。 VBからバーコードを印刷したいのですが いいミドルかバーコードフォントをご存知ないでしょうか? できればフリー、なければ市販のもので。 それかバーコードの仕様ってどこかで公開されてて 描画して出力したことある人っていますか?
>>218 ,219
ありがとうございます
218さんに紹介していただいたソフトはかなりよかったのですが
VBからの使用を考えると、もうちょっとって感じでした。すみません。
で、そのヘルプに参考リンクとして記載されてた
http://www.technical.or.jp/handbook/ のフリーのフォントを使うか、それか微妙に高さが足りないのが気になるのと
面白そうだってのもあるので
仕様をみつつ自作してみようかと思います。
ありがとうございました!
>>220 ただバーコードは作っても
それを読む機械が高いからテストできないんだよなー
出力したものを画像として読み込んで
正しいバーコードかを解析するアプリかサイトあったらなーと思います。
スレ違いスマン
222 :
PC初心者101 :03/12/01 09:54
メールをくださった方。 ご連絡お待ちしております。 よろしくお願いいたします。
>>222 あれからだいぶ日が経つのに、ずいぶん余裕あるなぁ。
>>221 最近のプリンタだと大丈夫だとは思うけど、バーコードて結構デリケートだからね。
印刷の都合で線の太さの比率がおかしくなったりして、昔プリンタによってだめだったことがある。
バーコードの基礎知識はキーエンスあたりに読み物があったように思うので、一度読んでみといたほうがいいよ。
あと、バーコードの種類によってはそれほど高くなくても、リーダはあるよ。
キーボードにつけるタイプで数万。
>>224 安いとこだと1万ちょっと。
でも買ってもテスト以外に使い道がみつからないので
買うのを躊躇してしまう。
5千円くらいなら買うんだけど、この差が貧乏人なのか(涙)
>>225 必要経費だろ?
最低限の検証はしようよ。
>>225 > でも買ってもテスト以外に使い道がみつからないので
バーコードバトラー。
携帯自作ゲーム機としてどうぞ。
(つーか、上位機種ならマジでテトリスぐらい出来る)
>>227 それってディスプレイ付きのやつでDOSで開発するやつ?
1台4〜50万しない?
買わねーw
229 :
デフォルトの名無しさん :03/12/01 13:48
教えてください!! VB6で英語表記のフォント名を取得したいのですが、どのようにしたらよいのでしょうか? Illustrator にスクリプトでフォント設定を行おうとしているのですが、設定するフォント名は英語表記のものでないとだめみたいなんです。 "MS ゴシック" の場合は、"MS-Gothic" という具合に・・・ どなたか、英語表記のフォント名の取得の仕方を知っている方はいらっしゃいますか?
230 :
デフォルトの名無しさん :03/12/01 14:51
10進数⇔2進数を相互変換してくれる便利なAPIは無いですか?
>>230 そのテーマは普通宿題じゃないか?
それなら自分でやったほうが良いぞ。
2進の文字列欲しければ、簡単にできるからいらないだろ? 普通に手計算で割っていくロジックをそのまま文字列連結してけばOK。 逆はそのままn乗を賭ければいいだけだし。
自作のプロセスヴューアを作ってるのですが、 タスクマネージャ等で表示されるようなプロセス名を指定して、 そのプロセスの実行ファイルのフルパスを取得するにはどうすればいいでしょうか?
234 :
デフォルトの名無しさん :03/12/02 09:07
教えて下さいませ。 Accessで顧客のデータ管理をしていましたがあまりにもデータが大きくなりすぎた のでSQL Serverに乗せかえることになりました。 ですが、レポートの数も多いのでDataReport等で作り直すより、できればそのまま Accessのレポートを使用したいのです。 そこで、ADOのレコードセットのデータをAccessのレポートで使用できないかなぁ とか思ってるのですが。 そんなことはできるのかと。。。?
XPとかでタスクトレイのアイコンから 「ポッ」とかいう音出しながらメッセージ表示するにはどうすればいいの?
>>236 「ポッ」とかいう音出しながらメッセージ出ないぞ!
239 :
デフォルトの名無しさん :03/12/02 15:28
すいませんが、教えてください。 FORM全体を画像として保存する方法を どなたかご教授してくれると とてもありがたいです。
ヽ(°▽、°)ノエヘヘヘヘ
242 :
デフォルトの名無しさん :03/12/02 16:29
フォーカスを受け取らないコントロール(ボタン等)って 簡単に出来ますか?
>>243 GetFocusでどっかにSetFocusしちゃえばいいんでない?
なんかヘンなことになりそうだけど・・。
受け取らない=フォーカス動かない。 なので、どっかにSetFocusするのはダメなんです・・・
>>243 フォーカスしたくないコントロールをフレームコントロールの中に入れる。
フレームコントロールのプロパティで、
Enabled = False
とする。
フレームの線が気になるなら、プロパティで線の表示を消せばよい。
>>246 それだとボタンは押せなくなっちゃいますね・・・
>>247 エエェェ。。。
ボタンおしちゃうのぉ・・・
250 :
デフォルトの名無しさん :03/12/02 19:00
なんのためにフォーカスを受け取らないように したいのかが良く分からないけど、 TabStopプロパティをFalseにするってのは?
>>250 TabStopをFalseにすると、フォーカスは移りませんが、
フォーカスが元に戻らず、TabIndex=0のコントロールに
行ってしまいますね・・・
やっぱり、そう簡単には出来ないですかね・・・
>>247 押すという事はマウスでクリックという事ですよね。
クリックできるという事は当然フォーカスが移動しないとできませんよね。
フォーカスってそういうもんでしょ。
何をしたいのかもう少し詳しく書けば、良い知恵を授けてくれる人はいると思うんですけど。
253 :
デフォルトの名無しさん :03/12/02 19:18
ソーダソーダ! Focus無しのボタンをオスナ!
DelphiだとTBitButtonとかあるんだけどなあ。
TSpeedButtonだった
じゃあ、ラベルかなんかをボタンの代わりにすれば?
なるほど、そういう事がしたいんですか。 だったら、フォーカスを取得できるすべてのコントロールの LostFocus イベントには、自分自身の参照を変数に保存するコードを書きます。 フォーカスを移動したくないコントロールの GotFocus イベントや Click イベントには、先に変数に保存してあるコントロールの参照を利用して、 SetFocus するコードを書きます。 今、頭に思い浮かんだままに書いたんですけど、こんな感じでできないですかね。
260 :
デフォルトの名無しさん :03/12/02 20:58
ボタンひとつでサイトの入力フォームにCSVをコピーできるソフトをつくりたいのですが、 どうゆう物を参考にしたらいいか教えてください。
261 :
デフォルトの名無しさん :03/12/02 21:03
>>243 コード書いてみましたよ。
フォームに、テキストボックス2つとコマンドボタン1つを配置し、それぞれText1、Text2、Command1 とする。
Command1 が、フォーカスを取得しないコントロールとする。
Command1 のプロパティ設定で、TabStop を False 、
同じく、TabIndex を 0 以外の数字にする。(←重要)
フォームに以下のコードを記述する。
Dim objReturnFocus As Object 'コントロールの参照保存用
'テキストボックス1(Text1)がフォーカスを失ったとき
Private Sub Text1_LostFocus()
Set objReturnFocus = Text1
End Sub
'テキストボックス2(Text2)がフォーカスを失ったとき
Private Sub Text2_LostFocus()
Set objReturnFocus = Text2
End Sub
'コマンドボタン1(Command1)(フォーカスを取得したくないコントロール)
'がフォーカスを取得したとき
Private Sub Command1_Click()
objReturnFocus.SetFocus
'---------------------
'以下に処理コードを書く
'---------------------
End Sub
263 :
デフォルトの名無しさん :03/12/02 22:17
>>262 そこまでするなら、キーボードフックした方がキレイなソースになるよ。
やりたいことは何でもできるし。
264 :
デフォルトの名無しさん :03/12/02 22:39
コンパイルしたものを戻すのはなんていうのですか?
265 :
デフォルトの名無しさん :03/12/02 22:39
逆コンパイル、デコンパイル
クラック
リバースエンジニアリング
「おや?ハッキングが無いようだが」 「そんなもの、誤用です」
DTPickerを使いたいなぁと思ったのですが どうしても日付が入った状態になってしまいます。 なんとか日付が入らない状態も表したいのですが どうしたらいいですか? 例えばDBから取得した日付がnullの場合などです。
>>271 thx.
確かにそれっぽいですね。
いいことおもいつきましたよ。
MonthViewを使えばいいんです。どうでしょ?
ガ━(゚Д゚;)━ ン !!! VB5には無かった。
PictureBoxに表示されている二値画像(曲線)を、 マウスのD&Dに合わせて、前後の点を補間しながら 変形させるプログラムを書きたいのですが、 どうすればいいのかよくわかりません・・・。 どなたか教えていただけないでしょうか。 よろしくお願いします。
>>274 どこがわからないかとか、どこまでできたかって書かないと。
レスありがとうございます。 まだ全くできていないのですが、 マウスで線を描いて、そこにいくつか特徴点を付け、 その特徴点をD&Dすることで画像を変形させるような事を考えています。
Line Input #Flno, Txt List5.AddItem (Txt) Loop Until EOF(Flno) Close #Flno このようなファイルを読みこむプログラムを作っているのですが、 1行が1024バイト以上のテキストだと それ以上の部分は読みこまなくて次の行にいってしまうのです String型が1024バイトまでなのかもしれないのかな? 1024バイト以上の部分はどうやって読みこめばいいのでしょう?
リストボックスだからじゃない?
279 :
デフォルトの名無しさん :03/12/03 16:48
239です。 formにピクチャボックスとラベルで グラフを書いてます。 ピクチャボックスだけ保存すると ラベルが写らず、 241氏にスナップショットならどうだと 教えてもらい、やってみたんですが、 保存時にダイアログを立ち上げるために、 画像にダイアログが写ってしまって、 どうにもなりません。 コマンドボタンをおして、ダイアログを立ち上げて 保存するのですが、うまく行く方法をお教えください。 お願いします。
>>278 テキストボックスにコピーしても
1024バイトしか読みこんでないので
Line Input #Flno, Txt
だと1行最大1024バイトまでしか読みこまないと思うのですよ
1024バイト以上を読みこむにはどうやればいいのかな?と
281 :
デフォルトの名無しさん :03/12/03 17:05
>>280 手元に環境ないからヘルプもしらべてないけど、
Len(Txt)、LenB(Txt)の値は?
Debug.PrintでTxt出力した場合は?
>>281 msgbox Len(Txt)を間にいれると
24
167
1024 ←この行のデータが途切れる
1
283 :
デフォルトの名無しさん :03/12/03 17:19
Line Input自作しちゃえば?w 1バイト読みで改行コードまで取る。
Txt は dim Txt as String ?
Private Sub Command1_Click() Dim buff As String Open "c:\hoge.txt" For Input As #1 Do Until EOF(1) Line Input #1, buff MsgBox Len(buff) Loop End Sub 余裕で読めたよ
>>285 そりゃあ、読めるでしょ。
Len 関数がオーバーフローしない限りね。
277氏が言っているのは、文字数のことじゃないと思うのだが・・・
286です。 私の勘違いです。 Len で文字数が取得できるという事は、 buff に全データ読み込まれてるってことですよね・・・ すんまそ・・・>285
288 :
デフォルトの名無しさん :03/12/03 19:43
ハガキのレイアウトを保存したいのですがどうしたらいいでしょうか? 今自分がやってるのはリッチテキストBOXの上にピクチャーBOXとテキストBOXを置いて そのピクチャーBOXとテキストBOXを適当な位置に移動しCommondialogを利用して保存し、その保存したのを読み込むと 保存した通りのように開くというものです。 わかりにくい文章ですが簡単に言いますと自分で作成したレイアウトを保存して、また読み込むと ピクチャーBOXやテキストBOXが同じ位置で読み込まれてるということです。 どなたかご教授おねがいします。
>>288 PictureBox や TextBox のLeft/Top/Width/Height を保存しておけばよいのでは?
1つの保存ファイルではがきの宛名や文章もレイアウトも保存したいのなら
そういうフォーマット(保存内容の形式)を自分で決めてみるのも良いかも。
いいってことよ( ´ー`)y-~~
>>285 普通のテキストならそれで読めるんだけど、
改行コードを間にはさまず1024文字(1024byte)以上の行があると
1024byte以上の部分が読みこまれない
>>291 ??
読み込まれるよ。1行1400文字くらいでやってみたけど。
Stringは2GbyteまでOKみたいだよ。
>>291 通りすがりのあてずっぽうだけど...
1025byte 目が &h1a なんてことはないよな。
msgboxの位置が間違ってた _| ̄|○スミマセンスミマセン
いいってことよ( ´ー`)y―┛~~
>>277 285は、1025byte以上読める。
277は、1024byteまでしか読めない。
リストボックスコントロールは、1024byteまでなんですね。
278で、143氏が言っているとおりですね。
コンボボックスコントロールも、1024byteまでみたいです。
299 :
デフォルトの名無しさん :03/12/03 23:04
@Microsoft ADO Data Control 6.0(OLEDB) AMicrosoft DataGrid Control 6.0(OLEDB) で、@を DC, AをDG としています(名前を)。 で、ADOのRecordsetをRsとすると、 Set DC.Recordset = Rs Set DG.DataSource = DC 又は Set DG.DataSource = DC.Recordset としていますが、データグリッドに何も表示されません。 テキストボックスのDataSourceをDCにしてみると、データが表示されるので、データコントロール はきちんと設定されているようなので、データグリッドの設定がまずいのかと思ってます。 どうしたらデータグリッドに表示されるんでしょう?
テキストボックスってOLEDB使えたっけ? DAOは使えたような気がするけど。
お助け下さい ≦(_O_)≧ ■VB6+SP5+WinXP ■MSWinSCK.ocxが正常に動作しない。 winsock ocxを使ってFTPクライアントツールを作成しているのですが、 Win2000では正常に動作するのに、WinXPで実行すると正常に動作しません。 FTP通信なので、winsockコントロールを同一フォームに2つ配置(@、A)し、 @をFTPコントロール用にport.21で接続、connect/pwd/list等やりとりを行い、 AをFTPデータ通信用にPASVでデータポートを取得し、接続、listやファイルダウン、 送信等のデータのやりとりを行うように作りました。 Win2000では設計したとおりに動作するのですが、WinXPではPASVで取得したポートに接続した後、 LISTコマンドを実行しても、データ用winsockコントロールのDataArrivalイベントが発生せず、 設計したとおり、動作しません。 何かWinXPではwinsockコントロールが使えない等、あるのでしょうか? よろしくお願いいたします。
302 :
デフォルトの名無しさん :03/12/04 10:02
そもそも、VB6ってXPでの動作保障ってあるの?
>>302 Σ( ̄□ ̄; コンパイル後の実行ファイルでもダメですか?
試してみたのですが、やはり動作しなかったです…。
WinXPにインストール自体は正常にできたのですが...
PASVだったらファイアウォールは関係ないよなー
>>304 一応ファイヤーウォールはない環境でテストしてるのですが。
(テスト用にローカルにも鯖立ててるのですが)
PORTコマンドを使うのに、自身のポート番号を得るAPIを使うより
PASVコマンドの方が楽だったもので。
>>305 XPはデフォルトで自身が持ってるファイアウォールを起動してる場合があるよ。 ネットワークの詳細設定参照。でもPASVなら関係ないよなー
>>306 一応ローカルネットワークのプロパティを確認し、
ファイヤウォールが起動していないことを確認してます。
その他、QoSパケットスケジューラーも無効化してます。
でもダメです il||li _| ̄|○ il||li
>>307 おいらもまったく同じもの作ったことあったので
ソースひっぱりだしてコンパイルしてXPで実行してみたけど
問題なかった。何が違うんだろうね。
う―ん。 対したソースではありませんが、公開しちゃいます(汗)
http://spcar.info/onFTP/onFTP_source.lzh 無断転用なコードもあったりなかったり、デバック用に怪しい情報書かれていたり
無かったりしますが、もう手に負えないから、お願いします。
WinXP環境でVB6使ってる方、実行してみてください!!
・レジストリは使ってません。
・EXEで実行時はonFTP.iniを、プロジェクトで実行時は!onFTP.iniを参照します。
・FTPサイトの設定は.iniを編集して下さい。
・DLL/OCXくっつけてますが、SYSTEMディレクトリにはコピーしません。
よろしくお願いいたします。
実行してみたいけどスパイウェアだったらどうしよう ((((;゚Д゚)))ガクガクガクブルブルブル
>>310 Σ( ̄□ ̄; そうか! その手があったか!(笑)
ってかソース付きなんで、不安なら読んで見てください。
添付のDLLとOCXは削除しても実行できるはずだし。
(W2K+VB6インストール環境で確認)
ってかFTPとは関係ないコードが8割強です(ぉぃ)
まぁ 皆さん当たり前に作っていると思われるプロシージャばかりですが。
※タスクトレイやファイルチェックやレジストリやらなんやら
言ってしまえば、ウチの力量バレバレ。
>>311 君を信じて実行してみたけど2000でもXPでも
LISTコマンドのあとで125が帰ってきてエラーになっちゃうYO!
あっ。125はいいのか。なんでリストでないんだろう。
>>313 125または150が帰ってくると、正常終了と書いてあります>FTPレスポンスコード
ウチのテスト環境が150返してくる鯖だったので、150しか書いてませんでしたが、
単純にselect case の case "150" を case "150", "125" としただけです
>>314 のコード。
こっちでかってに125追加しちゃったよ。 そしたら日本語のファイル名のとこで型違いエラーがでた。 そこもすっ飛ばすとXPでもリストでたよ。
>>316 テストありがとうございます。
そうですか、XPでも動きましたか。となるとウチのXPマシンがおかしいん可能性が大…。
ちなみに、editionは HOME ですか? PRO ですか?
添付のDLL/OCXはカレントディレクトリのままでしょうか? それとも削除されましたか?
是非教えてください。 よろしくお願いいたします。
p.s.まだ作ってる途中なので、日本語ファイルの処理はしてませんでした(汗)
Proだよ。DLLやOCXはそのまま。
でも、そのXPマシン。VB6が入ってる。
私のXPはHOMEなのですが、後は一緒だと思います。 もちろんVB6もインストールしてますし…。 とりあえず自分のマシン(XP)をWinXPのクリーンインストールから やり直してみます! 143さん、ご協力深謝! 本当にありがとうございました≦(_O_)≧
いいってことよ( ´ー`)y-~~
322 :
デフォルトの名無しさん :03/12/04 16:21
質問です。 VB6.0でサブフォームを表示する方法ってありますか? (フォームの中にフォームがある。) ACCESSのサブフォームと同じような動きを実現したいのですが。
323 :
デフォルトの名無しさん :03/12/04 16:27
>>322 有る。
キーワード 「MDI」 でググレ
それかアプリケーションウィザードで「MDI」を選択すれば簡単に出来る。
MDI
325 :
デフォルトの名無しさん :03/12/04 17:19
プロジェクト内のForm一覧を取得し、一覧表示する必要があるのですが どのような方法が考えられるでしょうか? もしくは可能なのでしょうか?
>>325 Forms()とForms.Countを使って、Forms(*).nameをListBoxに追加していけば
可能だと思いますが。
327 :
デフォルトの名無しさん :03/12/04 17:44
For I = 0 To Forms.Count Debug.Print Forms(I).name Next このコードでチェックしてみたところ、プロジェクト内にFormは10以上あるのですが、 I=1の時点で インディックスが有効範囲にありません になってしまいます。 MDIを使用していることとなにか関連があるのでしょうか? I=0ではMDIの親フォームの名前が表示されます。 のこりのFormはMDIChildFormと単独のFormが数点あります。
328 :
デフォルトの名無しさん :03/12/04 17:45
>>325 326さんの方法で可能だが、LoadされているFormのみ。
LoadされていないFormも取得するなら・・・Projectファイルを
テキストとして読込んで読み出すしかないかもしれない。
>>327 FormsのMSDN(ヘルプ)を開いて、関連項目をみれば、
MIDForm関連の記述があると思います。
>>327 For I = 0 To Forms.Count
↑IndexがゼロからなのでLoadされているForm数は-1しなくちゃダメ
っていうか、1個しか無いみたいだから、子FormはLoadされていないのでは?
PictureBoxの画像を自由変形させたいのですが どうすればいいですか?
332 :
デフォルトの名無しさん :03/12/04 18:12
>>331 PictureBox自身にはその機能はない。
VBにもその機能はない。
APIであなたのいう自由変形ができるかは微妙。どう変形するかによる。
安上がりなのは、コントロールを買うことでは?
>>331 >169 で有ったように「 SetWindowLong 」を使ってPictureBoxを
実行時にマウス操作でサイズ変更できるようにして、サイズ変更時に
PictureBox画像もリサイズするようにしておけば可能。
この説明で分からなければ、あとはググってくださいませ。
>>333 自由変形ってその程度なのか?
ゆがんだり、もりあがったりみたいなことじゃないの?
>>335 VBだと曲線はないかな?
線分の各座標点を自力で計算して、Polyline API呼び出し。
VBの円、楕円だけじゃ表現できないでしょ?
点の集合で考えれば上のAPIと同じだと思うけど。
塗りつぶしとかまで考えたら結構めんどくさそう。
>>334 確かにそのとーりでした。頭まで四角いなオレってば
>>335 ドロー系やね。面白そうだけど面倒そう
>336さんのと、「 PolyBezie API 」もいいかも。
VB(6以前)って「配列のようなもの」の最初が0だったり1だったりするから嫌い。
>>339 確かに。
Dim a(1 to 10) as hoge
って書くようにすれば統一できるのかな?・・・・と。だめかな?
配列は Option Base でどうにでも出来るけど コレクションは 0 で始まったり 1 で始まったり。
んな事言ってたらどの言語にもツッコミ処はある訳で・・・ VBにそういうのが多いのは確かだけど。
すみません、ActivX Dllのフォームを呼ぼうとすると 以下のようなエラーがでるんですが ぐぐったんですけど全然解決できません(泣 MSDNも調べたんですが同じエラーが出てる例がないんです。 なにか知っている方居ませんか?? 実行時エラー '374' ---------------------------------------------------------------------- メッセージ:コントロール 'VB.UserControl' をアクティブ化できませんでした。このコント ロールにこのアプリケーションとの互換性がない可能性があります。アプリケーションで提供され たバージョンのコントロール を使用しているかどうか確認してください。
すみません VB6はでSP5を当ててまつ OSはXPproです
おたすけください Option Explicit Dim Flg As Boolean 'イベントの連鎖防止フラグ Private Sub Form_Load() Flg = False 'イベントの連鎖防止フラグ初期化 End Sub Private Sub Text1_Change() Dim intPoint As Integer 'イベントの連鎖防止 If Flg = True Then Exit Sub Else Flg = True '文字列中から特定の文字列(ここでは"!")を検索し,存在する場合は選択状態にする intPoint = InStr(Text1.Text, "!") If intPoint <> 0 Then Text1.SelStart = intPoint - 1 Text1.SelLength = 1 End If Flg = False End Sub 要は入力に変化があった場合に自動的に特定文字列を選択するようにしたいんですが、 ふつーにTextBox上でDeleteキーを押下すると、何故か左端の特定文字列まで消えてしまう・・ (例)Text1.Text = "abcdefg!hijklmn!opqrstu!vwxyz"の場合 キーボード入力によりgとhの間の"!"が選択される ここでマウス等で選択状態を外し、例えばmの左隣にカーソルを移す Deleteキーを押すと、mは正常に削除されるが、同時にgとhの間の"!"も消え、nとoの間の"!"が選択状態になる Deleteキー以外は想定通りに動くので何が何だか・・ ググったりMSDN見てみましたがそれらしきトピはありませんでした SelLengthの部分をコメント化したらgとhの間の"!"は消えなくなる(もちろん"!"は選択されない) のでこの辺が怪しいとは思ってるのですが・・ 環境はWinXPPro+VB6.0SP5。Win2000+VB4.0でも同様の現象です よろしくおねがいします
>>346 >Deleteキーを押すと、mは正常に削除されるが、同時にgとhの間の"!"も消え、nとoの間の"!"が選択状態になる
いや、Delキー1回だけ押せば m しか消えんぞ。
Delキー2回目で、g と h の間の ! が消えて、n と o の間の ! が選択状態になる。
WinXP Pro + VB6SP5
348 :
デフォルトの名無しさん :03/12/05 09:21
>>330 色々と調べてみたのですが、やはりFormsではLoad済のFormしか取得できないようです。
今回の趣旨としてはあるプロジェクト内にあるForm群のなかから、
exeの実行されるクライアント上のiniファイルもしくはレジストリに記述してある
実行可能Formのみを実行可能にしたかったのです。
Form一覧を予め記述しておくことで解決するのですが、記述なしに
対処できないかと思い質問させていただきました。
質問に答えていただいた方々、ありがとうございました。
>>348 .vbpや.vbgがあるなら、そのファイルを読み込んで、
登録されている.frmファイルを列挙する方法はどうでしょうか?
350 :
デフォルトの名無しさん :03/12/05 09:41
>>349 実行環境にVBのプロジェクトファイルを配布するの?
お洒落じゃないよ。
>>348 のやり方でしょうがないんじゃないの?
>>348 何がどうしたいのか、ハッキリとは分かりませんが、
そんなにForm数が多くなければ起動時に一度全部
Loadして(Showはせず)数えて処理してから不要な
FormをUnloadしちゃって・・・なんていうのもアリかも。
Formが多いとかなり重くなりそうですがw
どちらにせよ解決策があって良かったですね。
>>346 ホントだ。一見フシギ現象ですね
追っかけてみるとどうもDELキーの時だけ2回、Changeイベントが発生している模様。
KeyDownとかKeyUpとか使うしかないのかなぁ
>>346 これだとウマク動くけど・・・どうかなぁ
Option Explicit
Dim dFlg As Boolean
Private Sub Form_Load()
dFlg = False 'DeleteKeyの連鎖防止フラグ初期化
End Sub
Private Sub Text1_Change()
Dim intPoint As Integer
If dFlg Then Exit Sub
'文字列中から特定の文字列(ここでは"!")を検索し,存在する場合は選択状態にする
intPoint = InStr(Text1.Text, "!")
If intPoint <> 0 Then
Text1.SelStart = intPoint - 1
Text1.SelLength = 1
End If
End Sub
Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = vbKeyDelete Then dFlg = True
End Sub
Private Sub Text1_KeyUp(KeyCode As Integer, Shift As Integer)
If KeyCode = vbKeyDelete Then dFlg = False: Text1_Change
End Sub
>>346 カンタンな補足だけ。
どうもDeleteキーの削除有効期間?がTextChangeイベントが終わるまで
続いているようだったので、KeyDownとKeyUpでフラグを使ってみました。
順番としては、
1:TextBoxから任意の文字を消す(例:mの左でDeleteキーを押す)
2:KeyDown発生(Deleteキーの時だけFLGをON)
3:任意の文字がTextBoxから消える
4:TextChangeイベント発生(FLGがONなら無処理で終わる)
5:KeyUp発生(Deleteキーの時だけFLGをOFF→TextChangeを呼ぶ)
6:普通にTextChangeイベント内の処理が行われる(!が選択される)
と、こんな流れです。参考になれば。。
ゴチャついててスマソ
355 :
デフォルトの名無しさん :03/12/05 15:44
すみません、教えてください。 ワーカースレッド内部でmdbを最適化したくて CDaoWorkspace::CompactDatabase(lpPath,tmpPath); という命令を書いています。 引数には思う値がきちんと通っているのですが なぜか二度目で落ちてしまいます。 具体的にはvoid PASCAL CDaoWorkspace::CompactDatabase内部の ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ DAO_CHECK(pDaoState->m_pDAODBEngine->CompactDatabase(V_BSTR(&varSrcName), V_BSTR(&varDestName), COleVariant(lpszLocale, VT_BSTRT), COleVariant((long)nOptions), lpszPassword != NULL ? (VARIANT)COleVariant(lpszPassword, VT_BSTRT) : _afxOptionalVariant)) ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑ ここでAccess Violationで落ちてしまいます。 気になる点は1度目は if (pDaoState->m_pDAODBEngine == NULL)がtrueと評価され InitializeEngine();が実行されると言う点です。 仕方なく無理やり二度目もInitializeEngine();を実行しても同じようにエラーがでました。 なにか根本的に理解が足りていないのでしょうか? 教えていただけませんか?宜しくお願いします。
>>355 VBとVC両方開きながら書き込んだら思いっきり誤爆してしまいました。
申し訳ありません。
GetForegroundWindowとGetActiveWindowの違いって何?
>>357 GetActiveWindow・・・この関数を呼び出したスレッドが持つ全てのウィンドウの内、
アクティブウィンドウのハンドルを取得する。スレッドがアクティブウィンドウを持た
ない場合、NULLが返される。アクティブウィンドウの概念は、スレッドごとに存在する。
Windowsが管理している全てのウィンドウの内、ユーザの操作対象になっている
ウィンドウを取得したい場合は、GetForegroundWindowを使用しなければならない。
GetForegroundWindow・・・Windowsが管理している全てのウィンドウのうち、ユーザ
の操作対象になっているフォアグラウンドウィンドウのハンドルを取得する。
フォアグラウンドウィンドウは、デスクトップにつき1つのみ存在する。
取得したウィンドウハンドルが示すウィンドウがトップレベルウィンドウであるとは
限らない。現在アクティブなアプリケーションのメインウィンドウを取得したい場合、
例えばGetWindow関数などを使用しなければならない。
・・・ググってくれ。
359 :
デフォルトの名無しさん :03/12/05 22:27
どなたかテンキーのKeycode番号を教えてください ←、↑、→、↓の順に、37,38,39,40なのは分かるのですが。 よろしくおねがいします
360 :
デフォルトの名無しさん :03/12/05 22:41
>>359 Callback手続きでウインドウメッセージをダンプすれば良いだろう。
あふぉか?
>>359 7 8 9
(103) (104) (105)
4 5 6
(100) (101) (102)
1 2 3
(97) (98) (99)
0
(96)
その他のコードは全て以下のコードで「自分で」調べてくれ
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
Me.Caption = KeyCode
End Sub
・・・釣られてんのかな?オレ
362 :
デフォルトの名無しさん :03/12/05 22:52
>>361 どうもありがとうございます。
>>360 nyで落としたものでヘルプ使えないんですよ
そもそもCallbackてのも分かんない様なペーペーなもんで。
>>360-361 見事に恩を仇で返されてしまったよな。(つД`)
傍観者の漏れまで悲しくなってしまった。
>>362 > nyで落としたものでヘルプ使えないんですよ
貴方にひとこと云っておく。
不正利用をしている者が正規ユーザでないことを理由にして
ヘルプが見れない等という理由で公な掲示板で質問するな。
あと味の悪いことしちゃったじゃねーか。
・・・短い間でしたが、サヨウナラ。
┌─┐
|も.|
|う |
│来│
│ね│
│え .|
│よ .|
バカ ゴルァ │ !!.│
└─┤ プンプン
ヽ(`Д´)ノ ヽ(`Д´)ノ (`Д´)ノ ( `Д)
| ̄ ̄ ̄|─| ̄ ̄ ̄|─| ̄ ̄ ̄|─□( ヽ┐U キコキコ
〜 〜  ̄◎ ̄ . ̄◎ ̄  ̄◎ ̄ ◎−>┘◎
まあ、いいじゃなか( ´ー`)y-~~
366 :
デフォルトの名無しさん :03/12/05 23:26
IEコンポーネントを使ったソフトを作っているのですが、 VBアプリから「インターネットオプション」のダイアログを表示させる ことはできるんでしょうか?
>>362 なんつーか、こういうの見ると、京都警察は正解だなって思ってしまう。
本当は京都警察嫌いだけど、けど・・・
368 :
デフォルトの名無しさん :03/12/05 23:56
∧_∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ( ´Д` ) < >362 通報しますた!! /, / \_______ (ぃ9 | / /、 / ∧_二つ / / / \ ((( ))) / ̄ ̄ ̄ ̄ ̄ ̄ ̄ / /~\ \ ( ´Д`) < しますた!!! / / > ) (ぃ9 ) \_______ / ノ / / / ∧つ / / . / ./ / \ (゚д゚) シマスタ!! / ./ ( ヽ、 / /⌒> ) ゚( )− ( _) \__つ (_) \_つ / > (・∀・)シマスタ!! .マスタ!! .スタ!!
369 :
デフォルトの名無しさん :03/12/06 00:15
たかが割れくらいで過剰反応するなよw
370 :
デフォルトの名無しさん :03/12/06 00:18
∧_∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ( ´Д` ) < >362 通報しますた!! /, / \_______ (ぃ9 | / /、 / ∧_二つ / / / \ ((( ))) / ̄ ̄ ̄ ̄ ̄ ̄ ̄ / /~\ \ ( ´Д`) < しますた!!! / / > ) (ぃ9 ) \_______ / ノ / / / ∧つ / / . / ./ / \ (゚д゚) シマスタ!! / ./ ( ヽ、 / /⌒> ) ゚( )− ( _) \__つ (_) \_つ / > (・∀・)シマスタ!! .マスタ!! .スタ!!
371 :
デフォルトの名無しさん :03/12/06 00:18
∧_∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ( ´Д` ) < >369 通報しますた!! /, / \_______ (ぃ9 | / /、 / ∧_二つ / / / \ ((( ))) / ̄ ̄ ̄ ̄ ̄ ̄ ̄ / /~\ \ ( ´Д`) < しますた!!! / / > ) (ぃ9 ) \_______ / ノ / / / ∧つ / / . / ./ / \ (゚д゚) シマスタ!! / ./ ( ヽ、 / /⌒> ) ゚( )− ( _) \__つ (_) \_つ / > (・∀・)シマスタ!! .マスタ!! .スタ!!
372 :
デフォルトの名無しさん :03/12/06 00:25
3ヵ月後 >362 に手紙が届きますた・・・ _____ / ヽ____// / / / / / / / / / / / / / / / / / /  ̄ ̄ ̄ ̄ ̄ | ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄| | | | | /  ̄ ̄ ̄ ̄ /_____ / /ヽ__// / 出頭セヨ / / / / / / / / ____ / / / / / / / / / / /  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄/ / /
今、
>>369 は「クールな俺ってかっこいい。俺ってワルだしぃ」と思っている。
375 :
デフォルトの名無しさん :03/12/06 01:00
∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧ < >369 なんだってーーーーーーーーーー!!!!! > ∨∨∨∨∨∨∨∨∨∨∨∨∨∨∨∨∨∨∨∨∨∨∨∨∨∨∨∨ ,. -─- 、._ ,. -─v─- 、 _ ,. ‐'´ `‐、 , ‐'´ `‐、, ‐''´~ `´ ̄`‐、 / ヽ、_/)ノ < ヽ‐'´ `‐、 / / ̄~`'''‐- 、.._ ノ ≦ ≦ ヽ i. /  ̄l 7 .....1 イ/l/|ヘ ヽヘ ≦ , ,ヘ 、 .i ,!ヘ. / ‐- 、._ u |/ / ̄l |/ ! ! | ヾ ヾ ヽ_、l イ/l/|/ヽlヘト、 | . |〃、!ミ: -─ゝ、 __ .l / ...レ二ヽ、 、__∠´_ |/ | ! | | ヾ ヾヘト、 ! !_ヒ; L(.:)_ `ー'"〈:)_,` /.|\ riヽ_(:)_i '_(:)_/ ! ‐;-、 、__,._-─‐ヽ. ,.-i、 /`゙i u ´ ヽ !..|(・) !{ ,! ` ( } ' (:)〉 ´(:.)~ヽ |//ニ ! _/:::::::! ,,..ゝ!...|⊂⌒.゙! ヽ ' i゙! 7  ̄ | トy'/ _,,. -‐ヘ::::::::::::::ヽ、 r'´~`''‐、 /....| |||||||||!、 ‐=ニ⊃ / ! `ヽ" u i-‐i ! \::::::::::::::ヽ `ー─ ' / ......\ ヘ_ ..ヽ ‐- / ヽ ` ̄二) /ヽト、 i、 \:::::::::::::::..、 ~" / .........\__..ヽ.__,./ //ヽ、 ー / ゝ .! \ `‐、. `ー:--'´ ./ .//イ;;::::: //〃 \ __,. ‐' ./ / \ ヽ \ \ / ..⊂ ( ./ /i:::::. //  ̄ i:::: / /
>>353-354 (328さま)
ありがとうございました。おかげさまでなんとかなりそうです。
またこのスレに戻ってくる機会がありましたらよろしくお願いします。
(もうこのレスすらご覧ではないとは思いますが。。)
>>369 Private Sub Form_Load()
A = "C0-B2-84AA-84AA-84AA-84AA-7C-7C-83B3-7C-28-7C-DF-7C-81CD-7C-DF-" & _
"7C-29-7C-83B3-7C-7C-84AA-84AA-84AA-84AA-CE-21-21-21"
Tmp = Split(A, "-")
For i = 0 To UBound(Tmp): Msg = Msg & Chr(Val("&h" & Tmp(i))): Next i
MsgBox Msg
End Sub
378 :
デフォルトの名無しさん :03/12/06 03:31
VB6LearningEditionでプログラムを作ってるんですが、 これで作ったプログラムってネットで配布できるのでしょうか。
>>378 ライセンスのことを言ってるんだったら、可。
ただし、対価は取っちゃだめ。
381 :
デフォルトの名無しさん :03/12/06 12:31
厨な質問ですみません。 最近ひさしぶりにVBの開発に戻ってきたのですが、 VB6のMSDNライブラリってネット上では見れなくなったのでしょうか? MSDNのページからさがしても.NETのものしか見つからないです。 もし見れるのなら、どなたかアドレスをお願いします。
343です
>>345 なんかサービスパックを当ててない奴がいたので
パッチ当てさせてリコンパイルさせたら行けました。
スンマセンでした
>>380 おおおおっ!すげーー。
ありがとーーー!!!
384 :
デフォルトの名無しさん :03/12/07 21:29
Dim intPastWindowHeight As Integer Dim intPastWindowWidth As Integer Dim intPastListBoxHeight As Integer Dim intPastListBoxWidth As Integer Private Sub Form_Resize() Form1.LogForm.List1.Height = intPastListBoxHeight + (Form1.LogForm.ScaleHeight - intPastWindowHeight) Form1.LogForm.List1.Width = intPastListBoxWidth + (Form1.LogForm.ScaleWidth - intPastWindowWidth) intPastWindowHeight = Form1.LogForm.ScaleHeight intPastWindowWidth = Form1.LogForm.ScaleWidth intPastListBoxHeight = Form1.LogForm.List1.Height intPastListBoxWidth = Form1.LogForm.List1.Width End Sub のようなコードでフォームのサイズ変更によっての増減を、その中の リストボックスにも反映させようとしてます。ですが、横幅はうまく行くん ですが、高さがうまくいきません。伸ばすときは伸びず、縮める時だけ 急激に反映されて、プロパティの値がおかしいとエラーがてでしまい ます。高さの方だけうまくいかないのは仕様なのでしょうか? また、うまくいきそうな方法を知っている方がいらっしゃったら教えて ください。
Dim intPastWindowHeight As Integer Dim intPastWindowWidth As Integer Dim intPastListBoxHeight As Integer Dim intPastListBoxWidth As Integer Private Sub Form_Load() intPastWindowHeight = Form1.LogForm.ScaleHeight intPastWindowWidth = Form1.LogForm.ScaleWidth intPastListBoxHeight = Form1.LogForm.List1.Height intPastListBoxWidth = Form1.LogForm.List1.Width End Sub Private Sub Form_Resize() Form1.LogForm.List1.Height = intPastListBoxHeight + (Form1.LogForm.ScaleHeight - intPastWindowHeight) Form1.LogForm.List1.Width = intPastListBoxWidth + (Form1.LogForm.ScaleWidth - intPastWindowWidth) intPastWindowWidth = Form1.LogForm.ScaleWidth intPastListBoxWidth = Form1.LogForm.List1.Width End Sub 理屈は良く分かりませんが、たまたま上のようなコードになった所、 うまくいきました。とりあえず、ありがとうございました。 ですが、なぜこれでうまくいくのでしょう?・・・・・
386 :
デフォルトの名無しさん :03/12/07 22:29
質問します。 mdbファイルの中のテーブルにOLEオブジェクトフィールドがありまして bmpイメージを保存しています。 それをPictureBoxに表示しようとしたのですが、 「フィールドまたはデータメンバに連結できません。‘イメージ’」 ってエラーメッセージが出てしまいます。 表示するのにコツとか必要ですか?
現在、adodcコントロール使ってPictureBoxと連結してます。
だれか・・・・、よろしくお願いします。
ググってみたんですけど、mdbファイルの中に置くのは 利用な方法でないみたいなんですね。 なので、外部ファイルにすることにしました。 (パクられるのが嫌なんですけど・・・) ありがとうございました。
日曜の夜中に書いて、月曜の朝一にせっついても・・・。 まあ、MDBを余り肥大化するのは良くないよ。性能劣化が激しくなるし。
すみません、質問です。 変数Aのアドレスを、変数Bのアドレスに設定する方法を教えてください。 昔どっかで見たんですけど、忘れてしまい、検索してもわからなかったのです…。 VBにはポインタ変数はないと思うので、確か何かの関数を使ったような気が するのですが…。
>>392 >>393 の回答が全てです。
VBではそういうことはしない設計にするのが普通です。
どうしてもやりたいなら、ラップするクラスを作って参照をどこかに保持するとかかな?
元の文面だけでは、なんでそんなことが必要かわからないからこれ以上は回答できん。
VBではやらないのが普通なのはわかっているのですが、やっぱり必要かと思ったので。 ええと、用途としては、フックをする際、lParamの値をMIMMAXINFO構造体変数の アドレスに格納したかったからなのです。 フックするメッセージがWM_GETMINMAXINFOだけだったらよかったんですが、 他のメッセージも横取りして処理する予定なので…。
質問します。 Dim str As String If str = A Or B Then str = str & "hoge" End If こういう場合はどうすればいいのですか?
>396 質問の意図がわかんねー!!! と思ったら、条件の部分か。 A、B共に文字列変数だと仮定して、 If ((str = A) Or (str = B)) Then でいいと思うんだけど?
>>396 If str = A Or str = B Then
>>395 =392
HookするところだけCで組んだら?
絶対その方が早いと思うけど
>>397-398 スゴイ!質問の意図を読み取るなんて
モレにはさっぱり分からなかった
>>392 (395)
> VBにはポインタ変数はないと思うので、確か何かの関数を使ったような気がするのですが…。
隠し関数のStrPtrとかのことかなぁ?
M$さんも隠すくらいの関数だからもちろん無保証らしいけど。昔は使えたヨ
>>395 そういうアプリはVCとかDelとかで作る。
適材適所。
403 :
デフォルトの名無しさん :03/12/08 13:19
↑訂正 If str = "A" Or "B" Then
>>403 どれの訂正かわからんし、何がわからないのかも判らない。
もしかして。”A"と”B”をびっと演算してstrに代入したいのか?
ちょっと深くもぐってみたんですが見つからなかったので、参照渡し関数を宣言して そこで処理しようと思います。lParamを使う分だけ宣言しないといけないのがネックですが、 時間がないので…。 明日完成していないといけないので、今回はこれで間に合わせますが、時間が出来たら CでHookを作ってしまおうかと思います。2年近くCを触っていないので不安ですが、 リハビリついでにやってみようかと。 皆様ご教授ありがとうございました。 >401 VarPtrで取得したアドレスを、何かの関数で格納していた覚えがあるのですが、 はっきりとは覚えていないのです。 見た当時は、VBでアドレス代入なんてしないだろーと思って、スルーしてしまったんです…。 MoveMemoryとかではない…と思うのですが……。もしかしたらこれか?
>>406 さぶクラス化で検索してみれば?
VBでWindowsのメッセージループを使うときのコールバック関数を渡すのに使うよ。
>>406 (392)
> VarPtrで取得したアドレスを、何かの関数で格納していた覚えが (略)
> MoveMemoryとかではない…と思うのですが……。もしかしたらこれか?
詳しくは知らんが、MoveMemory関数の引数が
MoveMemory(コピー先のポインタ, コピー元のポインタ, コピーするバイト数)
なので、そうじゃないのかなぁ。
どっちにしろ、自分的にも>402さんと同意見。
とりあえずVBで納品しといてあとでCでDLLなんかを作って差し替えておくと
良いと思います。ガンガッてくださいまし。
チェックボックスが4個あって 1がチェックされている時はこの画像を表示、 1、4がチェックされている時は1と4のANDを取った条件の 画像を表示させるようにするにはどうすればいいんでしょうか? 参考になるページ等あったら教えて欲しいです。 お願いします。
410 :
デフォルトの名無しさん :03/12/08 18:33
質問させてください。 Win32APIのLockFile()って、 ロックかけたら、自分自身もファイルアクセスできなくなっちゃうんですか!? ロックかけたら、ファイルオープンやリードでエラーおきちゃいました・・・ イミネーーー
ヘルプ上は他プロセスはNGだね。 同一プロセスで別ハンドルの場合はやったことないからわからない。 まあ、普通はロックしたハンドルで読み書きしてアンロックしてクローズだよな。
初めまして、いきなり質問ですみません。 現在特定のキーを押したらメモ帳などに特定のキーを押下した動きをさせたいと思い、 GetKeyboardStateやkeybd_event等を駆使して色々やっていたのですが、 どうしても、自分のフォームがアクティブの時にしか正しく動作しません。 正しく動かないだけで、メモ帳からVBフォームにカーソルを動かすと反応したりします。 サンプルではNumLockを外すとアクティブなウインドウにエンターキーを送り続ける 感じになっています。 既存製品のオートデモを作りたかったのですがこういう単純な方法では難しいでしょうか。 以下サンプル。
Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, _ ByVal dwFlags As Long, ByVal dwExtraInfo As Long) Private Declare Function GetKeyboardState Lib "user32" (pbKeyState As Byte) As Long Private Declare Function SetKeyboardState Lib "user32" (lppbKeyState As Byte) As Long Const VK_NUMLOCK = &H90 Const KEYEVENTF_EXTENDEDKEY = &H1 Const KEYEVENTF_KEYUP = &H2 Private Sub SubDisplayNUMLOCK() Dim keys(0 To 255) As Byte Call GetKeyboardState(keys(0)) Me.Cls If ((keys(VK_NUMLOCK) And &H1) = &H1) Then Me.Print "現在、NumLockはオンです" Else Me.Print "現在、NumLockはオフです" Call keybd_event(&HD, 0, 0, 0) Call keybd_event(&HD, 0, KEYEVENTF_KEYUP, 0) End If End Sub Private Sub Timer1_Timer() SubDisplayNUMLOCK End Sub
(;゚Д゚) TABは消えたのか……すみませぬ。
質問です。 Shell_NotifyIconでタスクトレイにアイコンを表示させたのですが、 そのアイコンをクリックしたときにポップアップメニューを表示させると その項目の何れかをクリックしないとメニューが閉じないのですが、 どうにかならないでしょうか・・・。
AppActivateで自分をアクティブにしとく
>>416 フォームのvisibleをfalseにしてあるせいかエラーが起きるんですが・・・。
他に方法はないですか?
418 :
デフォルトの名無しさん :03/12/08 22:02
>>415 メニューの中に『キャンセル』をつけてはどうですか?
419 :
デフォルトの名無しさん :03/12/08 22:05
>>415 メニューの中に『キャンセル』をつけてはどうですか?
押されたときはExit subするようにしておくか何も書かないでおいては?
>>419 うーむ・・・とりあえずそうしておきます。
他に方法が見つかったらまたお願いします。
有難う御座いました。
すみません、質問です。 VBからAccessのオブジェクトを操作する方法は分かったのですが その逆、つまりAccess(VBA)からVBのオブジェクトを操作する方法、 どなたかご存じですか? 例:Accessのフォームの「閉じる」ボタン押下→VBで作ったフォームを閉じる、とか。。。 宜しくお願いします。
423 :
デフォルトの名無しさん :03/12/09 02:36
Windowが、移動されたことを検出する方法ってありますか? マウスなどを使って移動されたときに他の処理を行いたいのですが…。
>>423 イベントを拾って云々というやり方もあるけど、めんどいからいつも
タイマイベントで移動したかを判定してる。
425 :
デフォルトの名無しさん :03/12/09 04:09
>>424 なるほど、それで行こうと思います。m(_ _)m
>>423 一番すなおなやり方は、ウインドウメッセージを取得する方法だね。
VBではサブクラス化というやり方で実現されている。
>>426 参考になります。
一応動けばOK的な感じなので、タイマで動作させていますが、負荷を考えるとそちらの方法がいいのでしょうね。
サブクラス化云々がよくわからない段階ですので、現状ではタイマが一番簡単そうなので…。^^;
>>415 これじゃないかな
// TrackPopupMenu か TrackPopupMenuEx を呼び出す前に、ウィンドウを
// フォアグラウンドウィンドウにしなければならない
// (see the MSDN Article ID: Q135788 )
こっちかも // BUGFIX: 最後に次のクリックに反応できるようにメッセージをポスト // (see the MSDN Article ID: Q135788 ) PostMessage(tnd.hWnd, WM_NULL, 0, 0);
430 :
デフォルトの名無しさん :03/12/09 15:51
imageboxに壊れた画像を読ませると応答を返してこなくなり、 そのままフリーズしてしまうのですが、なんとかならないのでしょうか・・・。
>>428-429 428の方のTipの通り、「SetForegroundWindow()」 を使って期待通りの
動作(PopUpメニューが他の場所クリックで消えてくれる)になるのを
確認したよ。たぶん、415さんもウマくいってるんじゃないかなぁ?
#もちろん自身FormはHiddenしたままでOKでした。
と、代わりに確認&報告してみるテスト
>430 壊れていない画像を使えばいいじゃん
>432 で、どうやって壊れてないかどうか調べるんですか?
434 :
デフォルトの名無しさん :03/12/09 17:23
旧版VBのバイナリデータを VB6のテキストデータに変換したいのですが 変換ツール(フリー) どこかにありませんか?
>>434 意味がわからん。
EXEからソースコードに変換したいってことか?
水野女史ってexeの中身が英語で書いてあると思ってたんですかね。
439 :
デフォルトの名無しさん :03/12/09 17:43
>>435 たしかVB2ってソースをバイナリ保存できるんですよ。
で、そのことなのか?
VB2.0か。さすがに忘れたな VB4.0で読めるのかなー
>>430 不正な画像を入れた場合、エラー「ピクチャーが不正です」とかなんとか
出たはずだったけどなぁ・・変わったのか?
443 :
デフォルトの名無しさん :03/12/09 18:04
>>440 「保存できる」はなくて「保存しなければいけない」ようです
テキストでないとVB6で開けないので
>>443 VB4ではコンバートできたけど、そのあとのバージョンだと意識したこともない。
VB2はないの?(私んところはあるんだが。w)
どの程度のアプリかはわからないけど、16->32Bitの問題、Win3.1 と今のOSの違いとか考えると、
動きだけ見て再設計のほうがいいと思う。
ウォ かぶった。。スマソ
449 :
デフォルトの名無しさん :03/12/09 18:37
わかりました 新しく作ります
わろた
452 :
デフォルトの名無しさん :03/12/09 20:04
VBではできるかどうかすらわかりませんが、現在のプロジェクトの ブックマークとブレークポイントのステップをプログラム上から (例えばアドインとか)取得する方法をご存知の方 いらっしゃいましたら、教えてください。
Format$(Now, "yyyy/mm/dd")の結果が 2003/mm/12/mm/09 って返ってくるようになった。ワーイ('A`)ノ
454 :
デフォルトの名無しさん :03/12/09 22:01
質問です。 スタートボタンが押されたことを感知する方法を教えてください。
455 :
デフォルトの名無しさん :03/12/09 22:32
>>454 windowsキーの入力を検知すりゃいんでねーの?
ちなみにwindowsキーはCtrl+Escだべよ
457 :
デフォルトの名無しさん :03/12/10 02:35
現在VB6+SP5でインストーラーを作っています。 システム環境変数に登録する等の内容があるので admin権限が必要なためadmin権限以外での インストールに排他をかけようと思っています。 APIのNetUserGetLocalGroupsで取得は出来たのですが、 ドメインに参加をしているユーザーの権限が取得できません。 なによい方法がありましたらご教授頂けないでしょうか? よろしくお願いします。
458 :
助けてください :03/12/10 07:08
助けてください。 VBで直線を書いたりとかしかプログラムできないんですけども、今度 ビジネスゲームというのをつくらねばならなくて参っております。 ここからが質問なのですが、あるお店の一日のお客の数を乱数で 割り当ててさらにそこからその乱数で決定されたお客の数の分だけ そのお客が何を買うのかというのをさらに乱数で決めることはできるので しょうか?もしできるのであれば、そこからまたお客を主婦、大学生、高校生 といったように客層も一人一人どんな人が何を買うのかというのを つくってみたいんですけども・・・こういったものってできるんでしょうか? 長々とした文章ですいません。
460 :
デフォルトの名無しさん :03/12/10 07:17
Visual Basic を習得するのに最適な本は ありますでしょうか? C/VC++/HTMLくらいは知っているのですが 今度アルバイトに応募するところがVisual Basicが要件 になってまして。 どれくらいで一通り習得できるものなのでしょうか?
461 :
助けてください :03/12/10 07:29
>>459 そうです。本当は何を使ってもかまわないんですけども
VBしか使ったことがないもので。最終的には利益がどれだけ
あったということをだすのが目的なんですけどもさっぱりでして・・・
462 :
デフォルトの名無しさん :03/12/10 07:30
>>460 VC使えるってことはMSDNぐらい読めるんでしょ?
本なんか買わなくても2〜3日で大抵のことはできると思われ
463 :
デフォルトの名無しさん :03/12/10 07:37
>>462 MSDNがありますたね。
しかしソフトはない。
自分ではVC++6.0Pro持ってるんですが、
VBだとどの辺買ったらいいですかね。
464 :
デフォルトの名無しさん :03/12/10 07:46
>>463 VC持っててMSDNないってあんた・・・・
>>464 ソフトがないというのは Visual Basic のソフトがないっつーことです。
VC付属のMSDNにVBの解説も入っていますけれど。
買うとしたら、VCにあわせてVB6.0のLearningですかね。
ヤフオクでみたら1万円ちょいみたいなようで、
VCよりも高いかもという印象。
C++言語みたいにフリーのコンパイラ(インタプリタ?)が あるといいんですがねぇ・・・。
最近釣りするやつと釣られるやつと ギャラリーばっかだな
>>467 どもども。
とりあえずバイト予定先に電話してからですが。(笑
ここで蹴られても、とりあえず習得しておくべきなのかな。
471 :
助けてください :03/12/10 08:37
473 :
デフォルトの名無しさん :03/12/10 10:17
474 :
デフォルトの名無しさん :03/12/10 11:08
>>471 はそもそもプログラマに向いていないので辞めたほうがいいと思われ。
プログラム作成の基本を教えると、だいたいこうだ。
1 何をやりたいかを箇条書きにする
2 どういう順番でやればそれを実現できるかを書き出す
3 2で書いた項目ごとにどういうコードを書けばいいか考える
4 実際に書いて動かしてみる
4の段階まで進んだら初めて質問にこい!!
VBで業務用のソフトを作るのにお勧めのHPや本ってありますか? 現在VB6.0、Oracle8iの環境です。
>>475 システム設計の本が欲しいのか、技術本が欲しいのかすら分からないぞな。
ここはいつから「初心者の質問に速攻で答える」スレになったんだw
>>475 PCDNでも行けば?
但し、今の状態では誰にも相手にされないと思うけど。
>458 474のいうことはもっともなんだけど、このおいちゃんがヒントをやろう。 1:客情報構造体を宣言する。構造体には客の種別、買い物リストを作成。 2:Rnd関数を使い、得た値を要素数にして客情報構造体配列を作成。 3:ループ構造で各客情報配列の買い物リストにRnd関数を使って、客の種別、 買った物を選択。あらかじめ客の種別・商品リスト配列を作っておけばいいだろう。 もし、買った物の数も複数にしたいのであれば、ここで買い物リスト変数をRnd関数を 使って要素数を取得し配列宣言、ループでリストを埋めていけ。 4:終わり アルゴリズムもどきはこんな感じだから、あとはわからない単語等はMSDNで検索汁。 そのくらいは自分でやれ。以上だ。
479 :
デフォルトの名無しさん :03/12/10 15:46
すんません、VB6でDOMを使ってXML文書の読み書きを やろうとしてるんですけど日本語のヘルプやサンプルってどこにあるんですか? MSXMLを落としてきてインストール、VB6の参照設定まではできたんですけど、 いざ作ろうと思ったらヘルプが英語のためさっぱりわかりません。 ご存知の方いらしたらよろしくお願いします
>>465 VB5.0のCCEをダウンロードするか、VB6.0の体験版が付いてる本を入
手してもいいんでない? 実行形式にはできないけど、コードの勉強に
は十分かと。
あと、.NET Frameworks SDKにGUIを実装するオープンソース環境も
あったはず。
僕はVB初心者です。私の書いてるのが意味わからなかったらすいません。 質問なのですが チェックボックスが4つあります。スタイルは、グラフィックスです。オブジェクト名をa,b,c,dとします。 aをクリックしたらaのVALUEが1とされる。そして、bをクリックしたらaのvalueが0となりbのvalueが1となる 次にCをクリックしたらbのvalueが0となりcのvalueが1となる。 このようなコードの書き方を教えてください。何階やってもうまくいきません。 お願いします。
482 :
デフォルトの名無しさん :03/12/10 17:06
>479
>>479 MSXMLの日本語訳は出てませんよ。
でもXMLの技術情報を扱ったページが多くあるので、
そういうところで勉強すればいいかと思います。
485 :
デフォルトの名無しさん :03/12/10 17:11
★★★★★常時接続の方におすすめビジネス★★★★★
1日二時間ネットを利用する人だと1ヶ月20000円は稼げます。
ネットサーフィン中に広告バナーを表示させているけでお金になります。
ネットサーフィンだけでなくワープロソフトやホームページビルダーなどを使って
お仕事していてもバナーを表示させていれば課金されます。
広告バーの使用時間は無制限。極端なことを言えば、1日24時間稼動させてもOK。
紹介制度も8段階あり頑張れば1ヶ月50万以上も可能です。もちろん登録も無料。
今までクリック保証のビジネスやメール受信をしましたがこれが一番お金になりました。
英語が苦手な方もホームペーシに解り易く登録方法を載せましたので登録できると思います。
ぜひ登録してみてください。確実に稼げます。
http://www.hamq.jp/i.cfm?i=cashfiesta
>>481 スタイルが、グラフィックスなんだったら
チェックボックスではなく、オプションボタンにしてはどうですか?
ダメですか。そうですか・・・。
>>481 Private Sub Check1_Click()
If Check1.Value = 1 Then
Check2.Value = 0
Check3.Value = 0
End If
End Sub
Private Sub Check2_Click()
If Check2.Value = 1 Then
Check1.Value = 0
Check3.Value = 0
End If
End Sub
Private Sub Check3_Click()
If Check3.Value = 1 Then
Check1.Value = 0
Check2.Value = 0
End If
End Sub
4個でも5個でも6個でもこの応用
スペースはどこに……
>>484 そうですか・・・(´・ω・`)ショボーソ
サンプルコードと英語辞書片手にがんばります。
>>487 わざわざ、ありがとうございます。けど、やっぱりだめでした。
実行すると、全部valueが1になってしまいます。
ほかの方法はありませんか?
>>486 そうなんですよね。しかし、チェックボックスじゃないといけないんです。
ありがとうございます。
Private Sub Check_Click(Index As Integer) Dim i As Long If Check(Index).Value = 1 Then For i = Check.Lbound To Check.Ubound If i <> Index Then Check(i).Value = 0 Next End If End Sub
>>455 ありがとうございます。
マウスでクリックされたのはどうやって感知すればいいのでしょうか。
494 :
デフォルトの名無しさん :03/12/10 19:15
>>455 Ctrl + Esc = Win か
知らなかった
感動!
>>491 >実行すると、全部valueが1になってしまいます。
そうなのか? じゃ、492もダメ?
処理ではなく、他に原因がある気がスルーテスト。
>>492 できました。ありがとうございます。ほんとにありがとうございます。
VBをやりはじめて、2週間ぐらいです。ずっと、これでなやんでました。
けど、この意味が理解できない。
>>492 あのLBOUNDとUBOUNDってどういう意味なんですか?
>>497 分からない単語にカーソルを合わせてF1キーを押す。
話はそれからだ。つか、もしかしてMSDN入ってない?
>>498 カブりましたが、何か?
i|i| _| ̄|○ i||i
>>491 まじですか(;゚Д゚)
これ、vbで実際に試して動いているコードなんだけど。
ボタン三つあって、必ず一個しかへこんでいない状態を作れる。
vb6だと動きが違うとかあるのかのぉ。
>>503 インストールしたときに入るものなのですか?ちょっと、もう一度、インストールしなおしてみます。
テキストボックスに数字と、バックスペースのみ入力可能にするコードは?
>>505 これでどないだ?
ちなみにChr(8)がバックスペース
Private Sub txtbox_KeyPress(KeyAscii As Integer)
Dim strPress As String
strPress = Chr(KeyAscii)
If (strPress >= "0" And strPress <= "9") Or strPress = Chr(8) Then
Else
KeyAscii = 0
End If
End Sub
データリピータコントロールで使うデータ連結ユーザーコントロールの作り方を 解説しているWebサイトで、いいのをご存知の方教えていただけませんか。 MSDNはどこを見ればいいのかわかりませんでした。 Googleで検索しても、いまいち トホホな質問ですいません。
>>506 Private Sub txtbox_KeyPress(KeyAscii As Integer)
If keyascii>=asc("0") and keyascii<=asc("9") Then
exit sub
Else
KeyAscii = 0
End If
End Sub
これだったらバックスペースキーをどこにいれればいいですか?
>>508 ほれよ
Private Sub txtbox_KeyPress(KeyAscii As Integer)
If keyascii>=asc("0") and keyascii<=asc("9") Or asc(&H8) Then
exit sub
Else
KeyAscii = 0
End If
End Sub
510 :
デフォルトの名無しさん :03/12/10 22:35
Imageコントロールに任意のjpgファイルを表示するには どうしたらいいんですか。 よろしくお願いします。
>>508 スマソ
509は間違い
これでいけるはず
If (KeyAscii >= Asc("0") And KeyAscii <= Asc("9")) Or KeyAscii = 8 Then
すれ違いですが、こんど基本情報技術者受けます。 VBは少しやってます。ほんとに少しだけれども。 それで、その資格でJAVAを選ぶつもりなんですけど、JAVAは難しいですか? あと、JAVAのソフトっていくらくらいしますか?
リア厨しかいない悪寒
Javaはたタダよ
>>514 そうなんですか。すいません。文系なもんでまったくしらないんです。
できれば、どこからダウンロードできるかおしえてください。
すいません。逝ってきまつ。
>>518 このなかのドレを落とせばいいですか?たくさんあってわかりません。詳しくお願いします。
>>517 もうそこにはお世話になっています。
>>512 C/C++もフリーのコンパイラあるぞ。
統合開発環境もフリーである。
>>519 J2SE v 1.4.2 および NetBeans IDE v 3.5.1 Cobundle
OSにあわせて選んでください。
>>508 KeyPressだけじゃ不十分なのは頭に入れておきましょう。
キーからのCtrl+Vやマウスでのペーストには効果ないからね。
523 :
デフォルトの名無しさん :03/12/11 01:35
常に最背面に表示するフォームは出来ないのでしょうか? SetWindowPosでは、背面表示は出来るけど、常にというのが出来ないので困ってます。
そういや、昔のbasicってアスキーセーブってのがあったな。
例えば50個のテキストボックスがあって、 フォーカスがあたった場合は、色が変わるとします。 この場合、前のフォーカスがあたっていたテキストボックスの色を消す必要がありますが どのようにすれば良いのでしょうか? 私には、全部のテキストボックスを消すという無能な方法しか思いつきません・゜・(ノД`)・゜・。 厨房な質問ですいません 実際には、あるコントロールをラジオボタンのように動かしたいのですが。
526 :
デフォルトの名無しさん :03/12/11 09:21
>>523 たしかSetWindowPosでできたと思うよ。クグれば出てくると思う。
>523 SetWindowPosで、HWND_BOTTOMとSWP_NOOWNERZORDERまたはSWP_NOREPOSITIONで いいと思うんだけど、どうよ?
教えてください。DBはSQLServerです。 以下のようなソースで数量の合計と各数量を取得したいのですが 2回も同じレコードセットをオープンするのは無駄ですし タイミングによっては不整合が生じると思います。 rs.MoveFirstなどを使ってレコードセットを再使用したいのですが どのようにすればよいでしょうか? dim cmd, rs, cnt Set cmd = Server.CreateObject("ADODB.Command") Set cmd.ActiveConnection = conn cmd.CommandText = "sp_SELECT" cnt = 0 set rs = cmd.Execute Do Until rs.EOF cnt = cnt + rs.Fields("数量").Value rs.MoveNext Loop rs.Close document.write cnt & "<BR>" set rs = cmd.Execute do until rs.eof document.write rs.fields("数量").value & "<BR>" rs.movenext loop
各数量とって、プログラム側で合計すればいいんじゃないの?
>>530 はい。合計してるんですが、ASPなので合計を先に取得しないといけないのです。
配列を使って取得したレコードセットの中身を保存しておけばできますが
それでは美しくないので・・・レコードセットの再利用がしたいのですが
rs.CursorType = adOpenDynamicとしても
rs.MoveFirstしてもエラーになってしまいます。
ストアドから取得したレコードセットはMoveFirstできないのでしょうか?
>>527 >>528 ありがとうございます。
でも、どうもうまくいかないんですね。
確かに、実行時には後ろへ行くんですが、
該当フォームや親フォームがアクティブになると、前へ出てきちゃうんです。
SWP_NOACTIVE を入れてもダメです。
純粋に「常に前面に表示」の逆パターンというのは出来ないのでしょうかね。
533 :
迷える子羊 :03/12/11 13:53
フォルダサイズを取得したく、以下のようにしたのですが、 C:\ を指定すると 3行目のSet objFolder...でエラーが発生します。 (Err.Number=70) ルートディレクトリを指定するのが問題なのか? それともサイズ(ルートディレクトリのサイズ)が10GBなのが 問題なのでしょうか? ちなみに他のフォルダ(サイズは1GB程度)だとエラーはでません。 Dim objFileSystem, objFolder As Object Set objFileSystem = CreateObject("Scripting.FileSystemObject") Set objFolder = objFileSystem.GetFolder("C:\")
>532 ちょっと簡単にサンプルを作ってみたところ、SetWindowPosを FormのPaintイベントで実行すれば、前には出なかった。 ただ、Paint関数にこれを置いてもいいものか…。誰か補足キボン
535 :
デフォルトの名無しさん :03/12/11 17:58
VBで作ったモノとC言語(VCでもOK)で作ったモノでメモリを使って通信したいのですが、 まったく方法が分かりません。また、探してみてもやりたい事のレベルが自分のレベルよ り高いためかぜんぜん当たってくれません。 どなたか以前にやった事がある。または、 関連したサイトを知っている方いないでしょうか? そうでなければ、メモリにVBからファイルを作って読み書きできる方法でもいいです。 アドバイス下さい。よろしくおねがいします。
DDEって言いたいのか?
DDEを教えると、VB.NETに移行するときに泣く目にあわせる事になる
539 :
デフォルトの名無しさん :03/12/11 19:31
グレゴリオ歴→天保歴 の 簡単なソースありませんか?
540 :
デフォルトの名無しさん :03/12/11 20:43
あるバイナリファイルに 「00 00 00 10」 というデータがあります。 これをVBで読み込むと、「&h10 00 00 00」となってしまいます。 なんとか、「&h00 00 00 01」と読み込む方法はないものでしょうか?
>>541 Dim lData As Long
Dim f As Integer
f = FreeFile
Open "****.***" For Binary As f
Get f, , lData
Close f
このようにLong型に読み込んでます。
545 :
デフォルトの名無しさん :03/12/11 21:00
>>534 それで出来ました?
試してるんだけど、バックに張り付いたままにならないね。
パラメーターは何にしてる?
546 :
デフォルトの名無しさん :03/12/11 21:05
教えてください。以前VB6を購入しました。XPにインストールして 使うにはどこでアップグレードしたりすればいいのですか
ええっ、VB6.0ってXPに対応してないの? ふつーに入れて使ってるけど問題あり?
>>548 XPへの対応はちゃんとサイトに書かれていたよ
IDEの動作の不具合報告なども。
>>535 CreateFileMapping APIからの一連でいけないか?
>545 hWndInsertAfterにHWND_BOTTOM、uFlagsに (SWP_NOSIZE Or SWP_NOMOVE Or SWP_NOACTIVATE Or SWP_NOOWNERZORDER)を 入れた。アクティブにするとhWndInsertAfterの値が無効になるらしいので、 SWP_NOACTIVATEは必須。Form_Loadに入れず、Paintイベントで実行。 SWP_NOSIZEと SWP_NOMOVEはなくても大丈夫っぽい。いろいろ試してみてくれ。
質問したのに下げてしまったので、あげます。
>555 そのリンク先のとおりやったら上手くいったよ。 一体どんなコーディングを組んだのさ?
こんなのです。jループで値が消えていくんです。 Dim objRec As New ADODB.Recordset Dim strArrA(2) As String Dim strArrB(2) As String Dim i As Integer Dim j As Integer strArrA(0) = "hoge1" strArrA(1) = "hoge2" strArrB(0) = "fuge1" strArrB(1) = "fuge2" For i = 0 To 1 objRec.Fields.Append strArrA(i), adBSTR Next i objRec.Open For j = 0 To 1 objRec.AddNew objRec.Fields(strArrA(j)).Value = strArrB(j) objRec.Update Next j
>555=558 まず、jループの部分が違う。iループの部分で項目が2つ出来上がってるので、 要素数j、項目数2の2次元配列が定義されていることになる。要素数が1つで いいのなら、ループは不要。要素数が2つ必要ならループを組んでもいいけど、 その場合、挿入する値をもう1種類増やす必要がある。 例えば、"hoge1"(adInteger)に列の値を、"hoge2"(adBSTR)にstrArrBの値を代入する場合、 For i = 0 to 1 Call objRec.AddNew( strArrA, Array(i, strArrB(i)) ) objRec.Update Next で値を代入していけばよい。 値が代入されているかの確認として、 Dim n As Integer Dim s As String objRec.MoveFirst Do While ( objRec.EOF = False ) n = objRec.Fields(strArrA(0)).Value s = objRec.Fields(strArrA(1)).Value objRec.Next Loop のDoループの部分で、nとsの値を確認していけ。 ただ、気になるのがUpdateをサポートしていないらしいところ。AddNewもだめなのか? それと、参照設定は何を定義したのかが気になる。自分は Microsoft ActiveX Data Objects 2.1 Library を使っているんだが。
FindFirst?
質問です。 VBAで宣言したGlobal変数を、VBから参照することはできるでしょうか? 出来る場合、どのようにすればいいでしょうか。 ご回答おながいします。
質問あげ(忘れ)。
563 :
デフォルトの名無しさん :03/12/12 16:32
グレゴリオ歴→天保歴 の 簡単なソースないんですか?
>559 さん ありがとうございます。 まず、参照設定はMicrosoft ActiveX Data Objects 2.5 Libraryです。 で、Supoortメソッドなんですが、実行した場所が悪かったらしく、 RecordsetをOpenする前にやっていたのでFalseが返ってきたみたいです。 Open後はTrueでした。お恥ずかしいです。 頂いたコードで上手くいきました。 ありがとうございました。
>>561 どのアプリのVBAと、VBのツールを連携させようとしてるか分からないから何ともいえないけど。
普通はできない、というかやろうとも思わない。
もし、連携が必要なら、COM使うとか、今日の朝上げたメモリ参照のところあたりを見てみれば?
567 :
デフォルトの名無しさん :03/12/12 17:13
>>566 AccessとVB連携させようと思ってます。
(一部、VBでしか作れないものがあり)
「やろうとも思わない」っすか。。。(苦笑
「今日の朝上げた」というのは
>>553 のことでしょうか?
うむむ。これも含め、色々試してみます。
ありがとうございました。
>>567 できないってことを言ってみてくれると、そっちのほうが解決できたりするかもよ。
569 :
デフォルトの名無しさん :03/12/12 17:29
>>568 DBを使っているので、Global変数の内容を
専用の一時テーブルに放り込んで
それをVBから参照するようにしました。劇的にカンタン。
最初からそうすれば良かったです。
頭カタイな、漏れ。。。
ともあれ、有り難うございました。
loadPicture使ったら成功しました。 とりあえずの報告です(苦笑)
571 :
デフォルトの名無しさん :03/12/12 22:42
質問です。 既に起動しているIEを操作するプログラムを作りたいのですが、 どうやったらいいのか分かりません。 SHDocVwで新しいIEを生成して操作するのはできるのですが。
>>572 フォームコントロールの操作とかです。ボタン押したり。
VBで作られたExeを逆コンパイルするツールを教えていただけないでしょうか.
>>574 そういうものが存在するという噂だけが存在する
とりあえず家にあったからVisual Basic 6.0でを強してみたんだけど、 Helpはないし、今更6.0を説明してるHPもないしで質問です どこかに乗ってたマシンイプシロンを手動で求めるプログラム Private Sub cmdOperator_Click() Dim eps As Single Dim hantei As String eps = Val(txtOperand1.Text) If 1# < 1# + eps Then hantei = "大きい" Else hantei = "等しい" End If lblAnswer.Caption = hantei End Sub で、なぜ1の後に#をつけるんですか? 付けないでやってみたら、結果が違ったんで気になってきました 要するに数値に#をつけるのはどんな意味があるんですかい?
577 :
デフォルトの名無しさん :03/12/13 01:47
>>576 「hantei」が「hentai」に見えたage
hanteiでもhentaiでもいいですけどね
>>571 SHDocVw.ShellWindowsをNewしてFor Each
>>576 Debug.Print TypeName(1)
Debug.Print TypeName(1#)
580 :
デフォルトの名無しさん :03/12/13 13:34
すみません。質問したいのですが、 初めのログイン画面でパスワードを2つ(a,b)設定して、bで 入ったら、次のメイン画面で一つコマンドボタンを非表示にしたいのですが、 どうすればよいのでしょうか。
581 :
デフォルトの名無しさん :03/12/13 13:44
質問です。コントロール間を、TabではなくEnterキーで移動する方法はありますか? できればキーコードを拾わずに実現したいのですが。。。
582=581です。 重ね重ね失礼しました。
584 :
デフォルトの名無しさん :03/12/13 15:12
(,,゚Д゚)∩せんせー オーナーフォームを指定してフォームをshowした場合、 オーナーフォームのオブジェクトにはどうやってアクセスするんですか?
586 :
デフォルトの名無しさん :03/12/14 00:19
すみません。visual basic6.0 のsp5をインストール中に cabファイルが開けませんでしたというエラーがでます。 xpです。
587 :
デフォルトの名無しさん :03/12/14 00:27
質問です。 チャットのログを特定のウィンドウ上に書きたいと思っています。 例えば ・IEでページを見ているときに ・チャットで誰かが発言をしたら ・その発言内容をIEのウィンドウの固定位置に書く というような感じです。 で、チャットの発言内容を取得するところまではできたのですが IEの固定位置に、文字列を描画する、というところが上手くできません。 何か、こういうテクニックとか、こういうWindowsAPIを使えばいい とかありましたら、よろしくお願いします。
>>586 最近入れ直したけど、うちでは出なかった。(VB6.0 on XP Pro)
SP5が壊れてるのかもしれないから、もう一度ダウンロードしてみそ。
>>589 ダウンロードツールで落としたら?
壊れた状態がキャッシュに残ってて
何度やってもキャッシュから読み込むとかあるから。
>>589 >>590 が書いてくれてるダウンロード専用ツールで落としてみるか、せ
めてIEのキャッシュを全部クリアしてから試してみそ。
どーしてもダメなら、Visual Studioの入れ直しも検討要かな?
IEのキャッシュクリアしたらできました。 なんか、しっくりこないですが、結果オーライです。 ありがとうございました。
Visual Basic で Cの関数を呼び出したり、 それを静的にリンクしてコンパイルすることは できるんでしょうか? またマルチスレッドプログラミングは可能ですか?
594 :
デフォルトの名無しさん :03/12/14 08:13
>>587 IE のウィンドウに書かなきゃだめなの? IE のウィンドウに重ねて別の
ウィンドウに、なら簡単でしょ。
>>592 何がしっくりこないの? IE のキャッシュの仕組みぐらい、理解しておいて
損はないよ。
>>593 できません。マルチスレッドも(一般的な意味では)できません。
>>594 えーっと、それでも問題ないんですけど
文字だけ書かれてる感じにしたいので
背景を全部透明にしたいと思ってます。
で、Windows2000とかだと簡単にできるみたいなんですが
ある程度、色々対応するためには、どうしたら良いのか分からなくて・・・
596 :
デフォルトの名無しさん :03/12/14 10:45
>>595 簡単なのは、IE のウィンドウをフォームの背景に描画して、ってやつかな。
透過に見せかけて、こういう処理を行ってるアプリはいくつか知ってる。
まじめにやるなら、描画したフォントのパスからリージョンを作って、それを
適用することになるね。
597 :
デフォルトの名無しさん :03/12/14 11:32
質問なんですが、VCのDLLを利用する場合に ・Declare文でのコールバック関数の表現方法 ・そのコールバック関数にNullを指定する方法 について、参考になりそうなページはありますでしょうか? 少し自分でも調べてみたのですが、まとまっているページが見つかりませんでした・・・ ちなみに typedef int (WINAPI *funcInit)(funcCallBack, void *, unsigned long); という関数があって ・Declare文が分からない ・第一引数(funcCallBack)にNullを指定したい(コールバック関数を利用しないため) ・第二引数(funcCallBackのパラメーター)は、funcCallBackがNullのとき無視される ということらしいのですが、適当な値として、何を指定すればよいのか分からない という状況です。
あ、書き忘れなのですが、コールバック関数は typedef int (CALLBACK *funcCallBack)(unsigned long, unsigned long, unsigned long, void *); と定義されていました。
>>597 > typedef int (WINAPI *funcInit)(funcCallBack, void *, unsigned long);
呼びたい関数も動的に変わるのか ?
それは、VB でできるんだっけ ? (識者の人 Help)
VB で、C/C++ のポインタは Long で表現する。
Null を指定する時は、0 を指定すればいい。
600 :
デフォルトの名無しさん :03/12/14 12:09
多分岐はswitch文じゃないんだなselect文なんだな じゃぁswitchはいつ使うのかと聞きたい
601 :
デフォルトの名無しさん :03/12/14 12:12
>>599 関数のポインタ呼び出しは、(かなりイリーガルなことをしない限り)VBでは不可。
>>600 使わんよ。
602 :
デフォルトの名無しさん :03/12/14 12:14
>>601 すまん。読み違えてた。この例の場合だと、AddressOf でユーザー定義の
コールバック関数のアドレスを渡してやれば大丈夫。
603 :
デフォルトの名無しさん :03/12/14 12:17
おまけ。 Declare Function funcInit lib "dll名" _ (ByVal funcCallBack As Long, _ ByVal arg2 As Long, _ ByVal arg3 As Long) As Long で、いいはず。
>>593-594 ビジュアル面をVBで作成して、背後の動作を
VCで作ろうと思ったんですが、結構難しいですか?
VBは未経験なんで、これから勉強なんですが。
>>604 背後をVCで作ること自体は難しくないよ。
癖のある部分を気をつける必要はあるけど。
文字だけ描画って、ウィンドウハンドルもらって
GetDCしてDrawTextじゃ駄目?
手元に開発環境無いので検証はできないけど。
606 :
デフォルトの名無しさん :03/12/14 19:27
>>604 割とありがち。API 呼び出しにするか、ATL/MFC で COM コンポーネントを
使うか。敷居が低いのは前者かな。古い方法ではあるけども。
>>606 COMは知らないので、APIですかねぇ。
*.dll にしてそれを呼び出す形になるのかな・・・。
608 :
デフォルトの名無しさん :03/12/14 21:52
>>607 そだね。
とりあえず、
|| [VB5] Visual Basic 5.0 から呼び出し可能な DLL の作成例
|| 文書番号: 410837
を読んでおきなはれ。
>>604 VCの画面造りがきらいで、VBのぺた貼りでやりたくて、言語がCがいいならば
C++ビルダーがあるじゃないか。
なぜその選択をしない。
610 :
デフォルトの名無しさん :03/12/15 12:42
次のようなコードがあります。 Private Sub Form_Load() Combo1.AddItem "aa" Combo1.AddItem "bb" Combo1.Text = "a" End Sub ロード後、コンボボックスをクリックすると、text部分が 「aa」に変わってしまうのですが、「a」のままにしておくことは 可能でしょうか? なお、仕様上、リストに「a」は入れられません。
611 :
デフォルトの名無しさん :03/12/15 13:25
>608 文章番号が違うじゃねーかYO!!! 正しくはJ031874だ!!!!! 丁度その資料が欲しくて、文章番号で検索しても見つからなかったんだよ…。
613 :
デフォルトの名無しさん :03/12/15 13:40
>613 こっちも禿げしくすまんかった。オンラインは番号違うんだね…。 こっちはCD版のほうで検索してたんだ。
615 :
デフォルトの名無しさん :03/12/15 17:21
616 :
デフォルトの名無しさん :03/12/15 17:45
>>615 自己レスです。StrConv(buffer, vbUnicode)でSJISコードからUnicode漢字に
変換できることが分かりました。
617 :
デフォルトの名無しさん :03/12/15 19:07
TabStripでフォームロード時に 2つ目のタブを選択状態にして表示する ことは可能ですか?
618 :
デフォルトの名無しさん :03/12/15 20:49
>>617 コードでタブが切り替えられるのなら可能でしょう。
>>617 SelectedItemだっけかな。こんな感じ。
Set TabStrip1.SelectedItem = TabStrip1.Tabs(1)
621 :
デフォルトの名無しさん :03/12/16 11:12
IMEを使わずに、自前でローマ字入力→カタカナ変換 (キーボードで“konbanwa”と入力するとラベルなどに“コンバンワ”と表示されるような) をしたいと思っています 作成言語がVBなのでこちらで質問させていただきましたが、 他の言語用にかかれたものでも結構ですので、なにか 参考になる資料など教えていただけるとうれしいです よろしくお願いいたします
622 :
デフォルトの名無しさん :03/12/16 11:30
byte配列の結合(?)ってどうやればいいのか教えてください。 Dim bytByte() As Byte bytByte = ChrB(&H1) bytByte = bytOutByte + ChrB(&H2) みたくしたいのですが上のはエラーになります。
>>621 一文字づつ処理していけばいいだけですよ。タイピングソフトを参考にしましょう
ただ、ローマ字には複数の書き方があるのでIMEのヘルプなども参考に。
>>622 どんなエラーが出たのかくらい最低限書きましょう。
ReDimを調べて使ってください。
624 :
デフォルトの名無しさん :03/12/16 13:54
ガイシュツだったら申し訳ありません。 RichTextBoxで背景に画像を指定することは出来ますか? 罫線入りノートの様なエディタを作りたいのですが・・・
>>624 そーゆーのはオリジナルの描画処理で作ってるのがほとんど
626 :
デフォルトの名無しさん :03/12/16 18:31
かなり初歩的な質問で申し訳ないのですが、 Int(4.975 * 100 + 0.5) の演算結果が497になってしまいます。 これって確か丸め?が原因で起こるんでしたっけ? Int関数などを使って、常に正しく四捨五入の演算をさせる方法が ありましたら、解決法を教えてください。
>>626 Int(4.975@ * 100@ + 0.5@)
いや。冗談だ。
628 :
デフォルトの名無しさん :03/12/16 21:52
フォーム上でGIFアニメを表示させるにはどうすればいいのでしょうか? 検索しても.NETの方のやり方しか記載されてませんでした。
630 :
CPU100% :03/12/16 22:30
float f=int((4.975 * 1000 + 5)/10); は? Cではなった。
しかし、このスレって聞き逃げのヤツばかりだな 解決したかどうかもわからん
>>628 DirectShowを使うという手もある。
動画ファイルと同じようにGIFアニメを再生できる。
>>626 回答じゃないけど、昔どっかのサイトで見た記憶。
VB5では、Int(100@/1@)がP-Codeだと100になって
ネイティブだと99になるw
レスさんくすです。
>>627 全部を通貨型にする方法ですね。
でも、ちょっと現実的でないような・・(W
>>633 ネイティブとP-Codeで違う結果になる場合もあるんだー。
VB6ではどうなんでしょう?
>>630 Webを探索してたら、似たような方法が載ってました。
Cの場合はおそらくそれで大丈夫のようですね?
原因が浮動小数点の丸め誤差だということは、
一度整数に直してから演算すれば問題が起こらないのでしょうか・・?
(4.975 * 1000 + 5) \ 10
って式も考えてみたんですけど、これでいけるのか
イマイチ自信を持てなくて・・・。
>>635 上の例の場合は試しましたけど、丸め誤差の可能性がある
全ての浮動小数点で大丈夫なのか自信が持てなくて。
なら通貨型にしとけよ、、、
>>637 おっしゃるとおり。通貨型にしたいところですが、
4.975っていうデータは、例として挙げただけで、
実際はここに演算結果が入るんですよー。
それに通貨型の場合は小数点の有効桁が4桁だから・・・。
639 :
デフォルトの名無しさん :03/12/17 02:31
フォームを動的に選択してロードする方法? どういうように質問したらいいのかすら分からないのですが・・・ 大量のフォームモジュール(ユーザに見せる画面)があるプログラムを作りたいのですが、保守の手間や ファイルサイズなどから、それらを個々にファイルとして作成しておいて、動的にロードできたらと思っています。 初心者な質問で申し訳ないのですが、この個々のフォームはどのようにして 作成すればよいのでしょうか?標準EXE?ActiveXコントロール? そして、呼び出し方も不明です。DLLで作成できたら、 Declare Function で呼び出せばいいのかなとも思いましたが、その他上記の問題とあわせて 何の命令を使ったらよいのか分かりません。 ご教授いただけますでしょうか。よろしくお願いします。
こんな時、ASMリストとか出したくなるよな
>>639 考えるだけ無駄です。素直に作ったほうが身のためですよ。
>>639 frmファイルを動的に読み込むような仕組みはVBにはない。
コントロール配列なら、元を一個配置しとけば実行時に数は増やせる。
でも、ファイルサイズについては、あらかじめフォーム作ったものであろうが
フォームの情報外出しにしようが本質的には変わらないんじゃない?
要はEXEコンパイルしなくてもフォームのデザインを変えられるようにってのが
最大の目的でしょ?
でもフォームによって使うコントロールが全く違っているような場合は
当然コードも変わるだろうから結局コンパイルし直さなきゃいけなくて
ほとんど意味無し。
使うコントロールが完全に決まっていて、配置とかプロパティとかだけの変更なら、
iniファイルか何かに保存しておいてロード時に読み込む仕組みを自分で作るしかない。
[text1]
top=100
height=200
コントロールの種類は決まっていて、データ件数などに応じて動的に個数が
変わる感じなら、コントロール配列のIndex=0だけ配置しといて実行時に
Load Text1(1)
text1(1).Visible=True
見たいな感じで。
>>642 レスありがとうございます。
フォームのデザインをたびたび変更することが考えられるのですが、その変更時に
変更した部分だけをコンパイルして、そのファイルを変更する、といった事がやりたいのです。
やりたいことは、フォームデザイン変更時に、ネットワーク経由でそのファイルを送りつけ、自動更新の
ようなイメージで変更させることです。
なので、呼び出し元や、その他フォームはさわらずにやり過ごせたらと思っています。
サイズの部分はここで気になっています。
フォームではイベントも扱うのですが、生成時にコントロールの配置やサイズなどを決める方法は分かったのですが、
イベントの処理を書く方法が分かりませんでした。
フォームを動的に生成できるならコンパイルの必要もなくなるので、それがベストだと思っています。
よろしくお願いします。
連続投稿失礼します。 たとえば、A,B,Cの仕事をするフォームがあったとします。 各仕事をするためのフォームには、さまざまな種類があります。 A1からA20までの種類のフォームの中から、ユーザは好きなものを選んで使います。 さらに、AからBのフォームを、呼び出します。 Bにも、B1からB20までのフォームがあります。 同様に、Cにもたくさんの種類があり、AやBのフォームから呼ばれます。 A,B,C、それぞれ、どの種類のフォームを使うか、ユーザー側が自由に気軽に変更できるように出来れば ベストです。 実際にはABCだけでなくて、種類が30種類程度になるので、全てを一括であつかいコンパイルする手間は 避けたいと思っています。 各フォームでは、コマンドボタンとテキストフィールドでSQL文を発行したり、 キーイベントでファイルを読み書きしたりします。しかも例えばA1からA20の種類の中では、デザインも 異なりますが使用するコントロールも異なってきます。 作成者側は、あらかじめ全ての部品をコンパイルすることはできます。 ユーザー側では、コンパイル作業はできません。 ネットワーク経由でファイルを書き換えることはできます。 このようなイメージなのです。よろしくお願いします。
>>643-644 VBで作成し、コントロールから挙がってくるイベントも処理したいとなると、
ActiveXでDLL作るくらいしか選択肢無いんじゃないかな。(管理が面倒なんで
あんまり好きではないけど)
Winampのプラグインみたいに、本体を再コンパイルしないでDLLだけ増やす
ってなことをやろうとしたら難しいとは思います(CreateObjectを駆使すれば
なんとかなるかもしれませんが)
内容が変わることはあっても種類自体は固定、という状態なら、画面の管理と、
画面遷移を管理するプログラム(EXEかDLL)と、画面(DLL)を分けて作ればいいと
思います。
デザインパターンのMediatorパターンが、やりたい事に一番近いのではないでしょうか。
実行時にイベントを受け取りたいコントロール(及びクラス)を変えたい場合、
WithEventsでメンバを定義して、それにインスタンスをセットしてやれば
いいはずですよ。
>>645 レスありがとうございます。
とりあえず、ActiveX DLLをキーに検索して、ThingDemo DLLというサンプルを見つけたので、色々やってみたいと思います。
また投稿します。
647 :
デフォルトの名無しさん :03/12/17 17:37
質問です。 自作のメーラを「標準のメーラ」にする方法が分かりません。 インターネットオプションのプログラムー電子メールのコンボボックスの 中にプログラム名が出るようにしたいのですが。 どっかのレジストリでもいじるんでしょうか?
648 :
デフォルトの名無しさん :03/12/17 17:51
>>647 HKEY_LOCAL_MACHINE\SOFTWARE\Clients\Mail あたりがそれっぽい。
649 :
デフォルトの名無しさん :03/12/17 17:53
>>648 そうみたいですね。ここを変えると変わりました。
ありがとうございます。
650 :
デフォルトの名無しさん :03/12/17 21:27
>>629 ,632
レスありがとうございます。無事動きました。
>>650 何を使ったのかという事までリポートしてくれたら他の人への情報の
共有ともなるのに。
>>651 お礼は言えても、どう解決したか書けないのは、
的確な情報を自分で検索できなかったことと、
本質的に同じ。
653 :
デフォルトの名無しさん :03/12/18 08:35
Webbrouserコントロールを使って、テーブルをとってきています。 たとえば、Yahooファイナンスの株価情報のような物です。 ただ、テーブルの長さがものによってちがうんですが、 テーブルの最後を判定する方法ってどうすればいいんでしょう?
>>653 HTML系のオブジェクトにWebBrowser.Documentを代入すると
操作が楽だぞ。
VB5.0で作成したソフトが管理者権限のユーザーでログインして インストール後、管理者権限でないユーザーでログインして そのアプリケーションを実行すると「パスが見つかりません」 というエラーが出るとのクレームがありました。 同様の経験をお持ちの方は是非アドバイスください。 よろしくお願いいたします。
>>655 ユーザ名に2バイト文字つかうなゴルァと言いましょう。
>>656 聞いて見ました。2バイト文字は使われていませんでしたが
ユーザー名の中に「\」が入っていました。
これは問題でしょうか?
659 :
デフォルトの名無しさん :03/12/18 14:27
このスレで既に出てる質問と似てますが proxyの切り替えについての質問です。 私の場合はむつかしいプログラムは無理っぽなので IEのインターネットオプションのproxyを書き換えて使いたいのです。 いくつかのVBの質問が出来るサイトで質問したのですが 「VBで出来ることではない」とか 「自分で調べてみれば?」とか言われました。 似たような機能があるVBプログラム(確かサイトにはVBで作ったと書いてあったハズ) があったと思うのでVBで出来なくは無いと思うのですが・・・ 質問しておいて反論すると吊るし上げを食らいそうなので 「そうですか、わかりました。」と書いて泣き寝入りしてしまいました。 技術的には質問サイトの方々には負けないぐらいのスキルをお持ちの 方々がいらっしゃるこのスレで質問させてください。 よろしくお願いします。
>659 >むつかしいプログラムは無理っぽ・・・ これがイクナイ!
>>658 聞く前に実験するとか何とかしないのかねぇ
>>662 現在、実験できる環境にないのですみません。
>>663 それは根本的に直すにはセットアップを作り直す必要がある。
対症療法で直すならユーザー名変更して再セットアップするしか。
どっちもできないならあきらめれ。
>>664 同じ環境で作り直しても事態はよくなりませんよね?
環境構築からやり直しかー(頭痛
>>665 setup.exeだったかsetup1.exeだったかを作り直す必要あるよ。
VB入れたら、それ作るためのソースも同梱されてる。
OSだのVBだのの再インストールは必要ないぞ。つか、しても良くならない。
VSIで作ればマシかもしれんな。 人柱としてためしとくれ
>>666 なんですとーーー
アプリケーションをVCで作り直すかー
>>668 だからそうじゃなくて・・・ ('A`)
もういいや。ほかの人にまかせたw
>>667 それはそうかも。ディストリ・・・のバグ(?)だからね。
670 :
デフォルトの名無しさん :03/12/18 18:21
>>622 Option Explicit
Dim m_bBuf() As Byte
Dim m_lBufLen As Long
Private Sub StrCpy(ByVal s As String)
Dim lLenB As Long
lLenB = LenB(s)
If lLenB = 0 Then
lLenB = 1
End If
ReDim m_bBuf(lLenB - 1)
m_lBufLen = lLenB
m_bBuf = s
End Sub
次へ
671 :
デフォルトの名無しさん :03/12/18 18:22
>>622 続き
Private Sub StrAdd(ByVal s As String)
Dim lLenB As Long
Dim sTmp As String
sTmp = m_bBuf
lLenB = m_lBufLen + LenB(s)
m_lBufLen = m_lBufLen + LenB(s)
If lLenB = 0 Then
lLenB = 1
End If
ReDim Preserve m_bBuf(lLenB - 1)
m_lBufLen = lLenB
m_bBuf = sTmp & s
End Sub
次へ
672 :
デフォルトの名無しさん :03/12/18 18:22
>>622 続き
Private Sub Command1_Click()
Dim b() As Byte
Dim s1 As String
Dim s2 As String
s1 = "abc"
s2 = "def"
ReDim b(LenB(s1) + LenB(s2) - 1)
b = s1 & s2
Debug.Print b
StrCpy "abcxx"
StrAdd "zzz"
Debug.Print m_bBuf
End Sub
終わり。
673 :
デフォルトの名無しさん :03/12/18 18:48
すいません、質問です。 テキストボックスを格納できる変数って、あるのでしょうか?? フォームと、それが持つテキストボックスを動的に指定したいので; Global G_Form As Form Global G_Txt As Control を標準モジュールにて宣言し; (例) Private Sub Command1_Click() Set G_Form = Me Set G_Txt = Me.Text1 End Sub とすると、G_Txtの中身は""になってしまいます。 ちなみに、G_Txt As TextBoxで宣言しても駄目でした。 宣言の仕方がおかしいのか、代入の仕方がおかしいのか その辺からよく分かってません。 宜しくお願いします。
ボタンを押すと最前面に表示するようにしたいのですが、拾ってきたコードを実行すると 「SubまたはFanctionが定義されていません。」とエラーがでます。 どうすれば動くのかご指南願います。 Dim FORMHANDORU As Long Dim SHOKITI As Integer Dim HYOUZI_SURU As Variant Dim NO_MOVE As Variant Dim NO_SIZE As Variant Dim KAIJYO As Integer 'ウィンドウハンドルの取得 FORMHANDORU = Form1.hWnd If SHOKITI = 0 Then '「常に手前に表示」を解除 MODORITI = SetWindowPos(FORMHANDORU, KAIJYO, 0, 0, 0, 0, HYOUZI_SURU Or NO_MOVE Or NO_SIZE) SHOKITI = 1 Command1.Caption = "「常に手前に表示」する" Form1.Caption = "現在は「ノーマル」状態です" ElseIf SHOKITI = 1 Then '「常に手前に表示」をセット MODORITI = SetWindowPos(FORMHANDORU, TUNENI_TEMAE_SET, 0, 0, 0, 0, HYOUZI_SURU Or NO_MOVE Or NO_SIZE) SHOKITI = 0 Command1.Caption = "「常に手前に表示を解除」する" Form1.Caption = "現在は「常に手前に表示」状態です" End If
Declare
解決しました。 有難うございました。
677 :
VB開発1年目 :03/12/18 23:26
質問です。 Debug.Printをラップして、イミディエイトウィンドウだけでなくファイルにも デバッグ文を出力する関数を作ろうとしています。 目的は、Debug.Printをラップ関数に置き換える事で実行時にログファイルを 出力する機能を既存のアプリケーションに追加する事です。 しかし、Debug.Printと同じような引数の記述の仕方がわかりません。 Debug.Printの引数は次の通りです。 -----(MSDNより抜粋)----- {Spc(n) | Tab(n)} expression charpos Spc(n):省略可能です。出力にスペースを挿入するときに指定します。・・・ Tab(n):省略可能です。n で指定した絶対桁位置にカーソルを移動します。・・・ expression:省略可能です。出力する数式または文字列式を指定します。 charpos:省略可能です。次の文字を出力するためのカーソル位置を指定します。・・・ 解説 引数 expression に複数の式を指定する場合は、各式の間をスペースまたはセミコロン (;) で区切ります。 -----(MSDNより抜粋)----- Debug.Printの引数を完全にラップできるのがベストですが、少なくとも expressionの"各式の間をスペースまたはセミコロン (;) で区切ります。" を実現したいです。 開発環境はWin2000+VB6.0SP5です。 有識者の皆様、ご指導の程よろしくお願い致します。
>>677 最初に配列を宣言して、debugと同じタイミングで
この配列に値を突っ込んで、最後にテキストファイルに
内容を書き出してみては?
679 :
デフォルトの名無しさん :03/12/19 00:52
質問です。 印刷を行うのにPrinterオブジェクトを使用したものを考えていたのですが、 どうやっても拡大率が指定できません。 調べてみるとZoomプロパティはプリンタのドライバに依存するとの ことですが・・・ なんとか拡大率の問題をなくす方法はないでしょうか?
質問です。 String型の変数にフォーム名を持っているのですが これを使ってフォームを開くことは出来るでしょうか? Private Sub Cmd1_Click() Dim strFormName as String strFormName = フォーム1 strFormName.Show ’↑こんな感じで。もちろん、これではできませんが。 End Sub よろしくお願いします。
681 :
デフォルトの名無しさん :03/12/19 07:44
>>680 Forms コレクションをループさせて、その名前を持つフォームを探し、
フォーム型のオブジェクト変数に入れて Show する
>>678 早速の回答ありがとうございます。
説明が足りず申し訳ありませんが、私が実現したいのは・・・
-----↓元ソース-----
Dim Data1 As String
Dim Data2 As Long
Dim Data3 As Boolean
'〜処理〜
Debug.Print Data1; Data2; Data3
-----↓修正ソース-----
Dim Data1 As String
Dim Data2 As Long
Dim Data3 As Boolean
'〜処理〜
DebugPrintWrap Data1;Data2;Data3 '←ラップ関数に置換
この様な感じでDebug.Printを単純に置換するイメージなのです。
配列に入れるやり方だとこれは実現できませんよね。
やはりセミコロンで区切るのはDebug.Print等の特殊なIFでしか出来ないのでしょうか?
>>681 朝早くから有り難うございます。
MSDNからコードをコピペして走らせてみましたが、
MDI親フォームと、そいつがロード時に開くMDI小フォームの
二つしかリストボックスに表示されません。
開きたいのは、他の入力画面なのですが
どうしたらそれの名前を取得できますでしょうか?
度々すみません。
宜しくお願いします。
(試してみたFormsコレクションのループです)
Dim I
lstForms.Clear
For I = 0 To Forms.Count - 1
lstForms.AddItem Forms(I).Name
Next I
>683 Formsコレクションでは、現在ロードされているフォームしか取得できません。 上記の手段をとるなら、少々野暮ったいですが、起動時に全フォームを ロードしておき、必要ないフォームはHideで非表示にしておけばいいと思います。 で、必要なフォームだけShowするの。 HideとShowの切替がめんどいかもしれませんが。
685 :
デフォルトの名無しさん :03/12/19 16:11
あ、sageちゃった。
>>684 あー、なるほど。了解です。
ありがとうございます。
私が作っているものの場合、
全てロードしてしまう=全てのForm_Loadが実行されてしまう
で、困ったことになってしまうのですが
ロードされていないフォームの取得は出来るのでしょうか?
>686 ロードされていないフォームの取得は………不可能なんじゃないでしょうか。 vbpファイルからFormを抽出して名前を得ることは可能でしょうが、名前だけ 解っても仕方がないし。 全てのForm_Loadが起動時に実行されると困るならば、Form_Load関数では 最低限の処理だけ記述しておいて、大事な処理を別関数にしておくのは どうでしょう?Showメソッドを呼び出す際、その関数を一緒に呼ぶとか その関数内でShowするとか。
688 :
デフォルトの名無しさん :03/12/19 17:27
あぁ、またsageちゃった。ごめんなさい
689 :
デフォルトの名無しさん :03/12/19 17:35
>>686 これで満足か?
Private Sub Command1_Click()
Dim f As Form
Set f = Forms.Add("Form2")
f.Show
End Sub
690 :
デフォルトの名無しさん :03/12/19 18:09
>>689 キタ━━━ヽ(∀゚ )人(゚∀゚)人( ゚∀)人(∀゚ )人(゚∀゚)人( ゚∀)ノ━━━ !!!
満足です!うわー、嬉しい。できたできた!
有り難うございます。 ・゚・(つД`)・゚・
>>687 さんも、ありがとうございました。
691 :
デフォルトの名無しさん :03/12/19 19:01
vbのon error goto ステートメントを使ったエラー処理のベストプラクティスにはどんなものがあるでしょうか。 参考になるWebサイトなど教えてもらえませんか。
Tabでよくやるように、重ねたFrameを切り替えるとします。 この場合、実際にEnableなFrameを知る方法を教えてくださいませんかm(_ _)m
boolean型って何故あるんでしょう? TrueかFalseかなんだから0から1までしか取れないですよね? それなのに手持ちの本にはサイズは2バイトって書いてあるんですよ それならByte型のほうが良いと思うんですが
>>694 Boolean型はTrueかFalseしか使用できないから、使い勝手が(・∀・)イイんですよ。
Byte型使うと、0か1だけでなく、2や3等の他の値も入れられてしまう。
仕様上、0か1しか許可しないのに、Byte型だと2以上の値を入れることが出来てしまうが、
Boolean型だと、コンパイラがエラーか警告出してくれるから、それでチェックできる。
チェックをコンパイラ任せにして楽できるから(・∀・)イイ!!
696 :
デフォルトの名無しさん :03/12/20 17:05
getdataで受信したデータが何かを識別したいんですが、どうすればいいでしょうか? 具体的には、Int型の定価データと商品番号データの2種類を送受信したいんです。 データを受信したときにそのデータが定価なのか商品番号なのかを 識別する方法はないでしょうか?
697 :
名無しさん :03/12/20 17:08
698 :
デフォルトの名無しさん :03/12/20 17:39
GlobalAlloc関数を用いて取得したメモリを、 Byte型の配列変数として参照するにはどうしたらよいのでしょうか? どなたかご教授願います。
700 :
デフォルトの名無しさん :03/12/20 18:50
極窓っていうソフトのバージョン情報を 表示したときに表示されるような パソコンの情報を色々と取得したいのですが、 どうすれば良いですか?
厨な質問ですいません。 textboxにSetFocusすると、 「プロシージャの呼び出し、又は引数が不正です」とでます。 例えば、 sub txtBoxSetCursor(aaa as integer) Text1(SheetInfo(aaa).BackColor = vbYellow Text1(SheetInfo(aaa).SetFocus end sub この場合、テキストボックスの色は変わりますが、SetFocusでエラーが出ます。 宜しく御教えください
>>701 Form_Loadでやってる?
フォームを表示したときに最初にフォーカスを与えたいならTabIndexを0にすればいいよ。
アドバイスありがとうございます。 フレームでページを切り替えてるのですが、 切り替わったページをのトップのテキストボックスにフォーカスを与えようとすると エラーが出てしまいます。 テキストボックスの色は変わるのに何故エラーが出るのかが釈然としません。
EnabledがFalseとか
>>704 念の為、Focusをあてる前の行で、該当のテキストボックスをEnableにしてみたのですがダメでした。
ActiveとFocusの違いが分かってないせいですかねえ?
VBでUSB接続のPC用ゲームコントローラからの入力を受け付けるには どうしたらいいのでしょうか?KeyDownイベントとかで入力を受け付けられますか? どなたか詳しい方ご教授願います。
DirectXツカエ
>>706 DirectInput使うのがめんどい場合は、
WinAPIのJoyGetPos関数を使用して、ジョイパッドの状態
(各ジョイパッドの接続状態、その各キーの状態)を調べられる。
詳しくはMSDNライブラリを参照のこと。
この時JOYINFO構造体を使うので注意すべし。
分からなかったらまた書き込んでくれ。
709 :
デフォルトの名無しさん :03/12/21 11:47
ビデオカードの名称を取得するには、どうすればいいのでつか?
今、VB6.0を使ってプログラミングをしているのですが、外部のソフトの設定を VBで行うことは可能でしょうか? shell関数を使えば、プログラム自体を呼び出すことは可能だとわかったのですが、 呼び出して自分で設定するのではなくてプログラムの中に組み込みたいのです 具体的に書くと、ボリュームコントロールのオプション→プロパティから、録音を選び Lineにチェックをいれ、OKをクリック。 その後Lineを選択 というものなのですが・・ どなたかよろしくお願いします
>>694 微妙に遅レス。
Booleanは論理計算できるのがいいと思ってたのだが。
Dim A,B,C as Boolean
A=True
B=False
C=(A And B) Or (A Or B)
ってやるとC=Trueってなるとか。
Booleanの内部表現が16bitか8bitかということと、 言語仕様上Boolean型が存在すべきかということとは、 なんの関係もない。 言語仕様上はあった方が分かりやすいし、理にかなっている。 内部表現的には、1bitで実装されていてもおかしくはない。
>>711 他人が見てもわかるかどうか、自問自答しながら説明する努力をしたほうがいい。
仕様を説明できるということは、コーディングできるということ。
コーディングできない君は、説明もうまくできていないことに気づくべき。
これは、プログラミングに向いているかの、資質の問題。
まあ、何が判らないか判らないんです!って感じだな。 訳判らない奴が考えて、ここが判らないという場合、 その思考することは大事だと思うが、初手から間違えた思考をしていることが多い。 だから聞く時は・・・、 1.何をやりたいか、普通の日本語(内部処理とか考えずに要求仕様を)で書く。 2.その上で、自分がどう考えて、何を調べ、試し、どのように上手く行かないかを書く。 それだけで、回答を得られる率は全然違うと思うけど。
VB6.0(SP5)で開発を行っています。アプリケーションのローカリゼーションを行っていて、 VB6.0付属のサンプルコード(ATM.VBP)を参考にしてアプリケーションを作ったのですが、 例えば 101 ラベルの表示 102 フレームの表示 103 メニューの表示 104 英語ボタン 105 日本語ボタン 201 Label's Caption 202 Frame's Caption 203 Menu's Caption 204 English Button 205 Japanese Button と言うリソースファイルを用意して、 pubRESID=100 Label1.Caption = LoadResString(pubRESID + 1) Frame1.Caption = LoadResString(pubRESID + 2) Menu1.Caption = LoadResString(pubRESID + 3) Command1(0).Caption = LoadResString(pubRESID + 4) Command1(1).Caption = LoadResString(pubRESID + 5) みたいな感じで、逐一Captionプロパティーに代入しているのですが、もっとうまいやり方が あるんじゃないかと思うんですよ。例えば
(続きです) Dim Obj_Control As Object On Error Resume Next i = 1 For Each Obj_Control In Form.Controls Obj_Control.Caption = LoadResString(pubRESID+i) i = i + 1 Next Obj_Control と言ったコーディングが出来るかと思ったんですが、フォームに配置したオブジェクトの順番 (一時停止してローカルウィンドウのMe.ITEMで確認してます)ってコントロールを追加したり 削除したりすると変化しますから、フォームをメンテするとリソースファイルもメンテしなきゃ ならなくなるので、うまくないなぁと思いまして・・・ なにかよいアイディアはないでしょうか?
720 :
デフォルトの名無しさん :03/12/22 09:32
テキストコントロールの仕様不可時の色って変えられないんですか?
721 :
デフォルトの名無しさん :03/12/22 12:24
>>720 TextBox.BackColor=(任意の色)
TextBox.Enabled=False
これでいいのかな?
ちなみにEnabled=Trueにするときは
もちろんまた色戻さないといけない。
あ、すみません! 説明不足でした・・・ フォントの色です。。 テキストボックスのフォントの色、使用不可にするとグレーになるじゃないですか。 たとえばこれを黒のままにしておくとかしたいんですが・・・
>>722 使用不可(Enabled=False)では出来ない。
使用不可ではないけどLocked=Trueなら色変えられるよ。
あとはそのテキストボックスにフォーカスが移ったら
他のコントロールにフォーカスを飛ばすとか。
725 :
デフォルトの名無しさん :03/12/22 15:35
>>722 コンテナ上に配置して、コンテナの Enabled を False にする、ってのがよくありがちな技。
726 :
デフォルトの名無しさん :03/12/22 17:13
A(1000,1000) B(10,1000,1000) という配列があって、B(1,)にAの内容を全てコピーしたいのですけれど、 For i=0 to 1000 For j=0 to 1000 B(1,i,j)=A(i,j) Next Next とやると時間がかかりすぎるので、一括してコピーする方法というのはないでしょうか?
memcpy
>>727 連続して格納されているとは限らないので、それを使うのはどうかと。
固定長なら
>>727 でいけるんじゃないの?
>>726 が型を書いてないからわからないけど。
Dim A(1000,1000) as ?
Dim B(10) As Variant
・・・・・・・・・・・・・・・
B(1) = A()
MsgBox B(1)(1, 1)
>>729 すみません。
AはByte型、BはInteger型です。
SP6はいつになったらリリースされますか?
>>718 おいらも昔悩んだ記憶があるなぁ。
おいらの場合、必要なコントロールのTagに「RES=xxxx」って入れておいて、
それをキーにLoadResStringしたっけなぁ。
SP5で打止めでつ。XPでは.NETをお使いくだちい。 ‥‥と、MSなら平気でアナウンスしそうな悪寒。(´・ω・`)
734 :
デフォルトの名無しさん :03/12/23 00:33
Eval関数を使いたいのですが、VB5には実装されていないようです。 VB6には入っているのでしょうか。 テキストボックスに書き込んだ数式を、実際の関数としてプログラム内で 使いたいのですが。(OSはXPです。)
DataGridやDBGridでIMEのモードを変更する方法をご存知でしたら 教えてください。 ちなみにVB6+SP5を使っています。
text1.text が こんにちはA こんにちはB こんにちはC で text2.text が こんばんわA こんばんわB こんばんわC の時、 text1.text + text2.text だと、
こんにちはA こんにちはB こんにちはC こんばんわA こんばんわB こんばんわC になってしまいますよね。 そこで こんにちはAこんばんわA こんにちはBこんばんわB こんにちはCこんばんわC にするにはどうしたらいいんでしょうか。
>>737-738 text1.textの内容を一文字ずつ読んでって、改行を発見したらそこにtext2.textの同じく改行までを挿入する
>>732 おお、Tagプロパティーを利用すればオブジェクトを一意に識別する事が
出来ますね。ヘルプファイルにもヒントが書いてありました。
Tagプロパティーって全然意識してなかったので盲点でした。こう言う場
合に使うんですなぁ・・・
>>737-738 Dim a As Variant, b As Variant, c() As String
a = Split(Text1.Text, vbNewLine)
b = Split(Text2.Text, vbNewLine)
'If UBound(a) <> UBound(b) Then Exit Sub
Redim c(UBound(a))
For i = 0 To UBound(a)
c(i) = a(i) & b(i)
Next i
Text3.Text = Join(c, vbNewLine)
742 :
デフォルトの名無しさん :03/12/23 10:15
どなたか質問に答えていただけないでしょうか? Printerオブジェクトにイラストを描画した後、その上にテキストを重ねて描画し、 印刷をしようと思ったんです。 そしたら印刷されたイラストの上に、テキストの背景であろう白い矩形が残ってしまい、 イラストが欠けた状態で印刷されてしまいます。 コードを以下に記します。 Printer.CurrentX = 0 '頭から0ミリの場所に印刷 Printer.CurrentY = 0 '左から0ミリの場所に印刷 PictureBox.Picture = Loadpicture("c:\picture\picture.bmp") Printer.PaintPicture PictureBox.Picture, 0, 0, PictureBox.Width, _ PictureBox.Height, 0, 0, PictureBox.Width, _ PictureBox.Height) Printer.CurrentX = 10 * 56.7 '頭から10ミリの場所に印刷 Printer.Current = 10 * 56.7 '左から10ミリの場所に印刷 Printer.Print "あいうえお" Printer.EndDoc 先にテキストを描画した後でイラストを描画しても、テキストがイラストに 隠れた状態で印刷されてしまいます。 イラストもテキストも欠けることなく、PictureBoxに描画してからそれを 印刷するという手法を取らずにきちんと印刷するにはどうすれば良いので しょうか?
すみません、上のレスの誤字修正です。 Printer.Current = 10 * 56.7→× Printer.CurrentY = 10 * 56.7→○ PictureBoxに描画してからそれを印刷するという手法を取らずに→× テキストは、PictureBoxに描画してからそのイメージをそのまま _ 印刷する、という手法を取らずに→○
>>742 やってみたら問題なくできた。環境のせいかな・・・
>>739 一行づつ読んでいくというのが分かりません。
ファイルを読み込む場合は
open ファイル名 for input as #ファイル番号
input #ファイル番号 , 変数名
close #ファイル番号
なんでしょうけど、text1.textみたいのを読み込む場合はどうすればいいのでしょう。
>>741 配列・・を使うということですよね。
頑張ってみます。
それにしても、簡単な式で表せそうで、そうでもないんですね;;
>>745 dim i as integer
dim s1 as string
dim s2 as string
s1 = text1.text
for i = 1 to len(s1)
s2 = mid$(s1,i,1)
next
>>745 Dim i As Integer
Dim strText As String
Dim strTmp As String
Dim strTmp2 As String
Dim strArray() As String
strText = Text1.Text
ReDim strArray(0)
For i = 1 To Len(strText)
strTmp = Mid$(strText, i, 1)
Select Case strTmp
Case vbCr
Case vbLf
ReDim Preserve strArray(UBound(strArray()) + 1)
strArray(UBound(strArray())) = strTmp2
strTmp2 = ""
Case Else
strTmp2 = strTmp2 & strTmp
End Select
Next
For i = 1 To UBound(strArray())
MsgBox strArray(i)
Next
最近WirelessOpticalMouse2.0を導入したのですが、コーディングウィンドウ上 で、ホイールによるスクロール操作ができなくなってしまいました。 以前IntelliMouseでも同様の症状がありましたが、これはドライバをアップデート することで解消できました。 ですが、今回はドライバの最新版が見当たりません。 どなたかご存知の方いたら教えて下さい。
>>749 それは普通にスクロールするということでしょうか?
ちなみに当方はVB6.0、Win2000という環境なんですが、全く動きません・・・。
俺はコレで動いてるがなぁ
スクロールバーを右クリックして、「最上部」、「最下部」ってのが機能した事がない。
>>750 ”どこでもホイール”というソフトがあるのだが。
>>744 ごめんなさい、確かに
>>742 のコードでは正常に動くようです。
僕の作っているプログラムでは、
>>742 のコードの前で以下のコードを
書いていたのです。
Printer.ScaleMode = 1
Printer.Height = 10777
Printer.Width = 7687
Printer.Orientation = 2 '用紙の向きを横に
この4行が入ると何故か動かないのです・・・
>>747 ありがとうございます。
まだ配列勉強中ですけど、参考にさせて頂きます。
756 :
shggy :03/12/23 20:02
はじめまして。shggy と申します。 自分、最近日本語環境 Win98 で作成したアプリを英語版 Win XP Professional に移植する仕事を依頼されました。 ソースから移植しXPでexeを作成しようとしたのですが、 DBのOpenが動作しません。 日本語のXPに移植したときはうまく動作したのですが。 問題が起こるソースは SQL="select * from abc" Set rs = New ADODB.recordset rs.Open SQL,ADO_Connection,adOpenStatic,adreadOnly といった感じのごく普通のソースです。 この文を実行すると Run-time error '-2147467259(80004005)'; selected collating sequence not supported by the operating system というメッセージが表示されますがMSDNのHELPにはリンクしていないです。 この文はそこらじゅうに使っていて、もしこのOSで使用できないとなると 全ての文を書き換えねばならず、正月も吹っ飛ぶ勢いです。 もし、同じ現象を経験された方がいらしたら、ご意見を伺えないでしょうか。 宜しくお願いいたします。 shggy
>>756 正月ないかもね。
データベースの文字コードは何?
EUCとかShiftJISだとまずいかも。
758 :
shggy :03/12/23 20:13
databaseはひとまずmdb です。日本語環境のAccess 2000 で作成しました。 内容は全て英語なのでもんだいないと思います。 rs.Open "abc",ADO_Connection だと動作するのですが。 やはり正月はないですか・・・ が、が、がっくり。
,adOpenStatic,adreadOnly これ消すだけで正月がふっとぶの?
760 :
shggy :03/12/23 20:26
いや、違うんです。 rs.Open "select * from abc",ADO_Connection だと756のエラーが出力されて動作中断するのです。 select文が使えないというのはやはりDBの問題ですかね。 もう少し、調べてみます。
761 :
shggy :03/12/23 20:31
申し訳ありません。解決しました。 databaseをXPで最適化したら、あっさり動作しました。 お騒がせしました。 また、お邪魔することもあるとは思いますが、ひとまず失礼します。 shggy
正月休みおめ
byte型を数値(Long)型に変換する手段はどんなのがありますか? 検索してもいまいち解りません。 手法だけでもご意見ください。お願いしまっす。
>>764 定義体ファイルにbyte宣言されている項目があってその値は本来
数値で表現されるべき値なのでLong変換した後RecordSetに更新し
外部に受け渡したいのです。
Vbの中で変数に値を代入する際、強引に
a = Cdbl(バイト変数値)
とか横着しても駄目でした(当然か)
なにか策はありませんでしょうか?
>>765 Dim a As Long
Dim b(0 To 3) As Byte
a = ((b(0) And &H7F) * &H1000000) Or _
(b(1) * &H10000) Or _
(b(2) * &H100) Or _
(b(3))
If b(0) And &H7F <> 0 Then
a = a * (-1)
End If
動作確認もリトル/ビッグエンディアンもまったく無視してるので適当に
デバッグしておくれ
おお、コードまで有難うございます。 ここに環境が無いので即試すことはできませんが明日早速試して みます。 やはりそんな都合の良い関数がVbに用意されている訳はないのですね。 もし有ったら馬鹿な質問かと心配してしまいました。 ありがとうございます
memcpy でやれるかもしれんが、俺はやったことないので退散。
>>754 の件ですが、結局その4行は削除しました。
そういった印刷の諸設定は、印刷用コモンダイアログ内のプロパティボタンで
ユーザーさん側で手動で行ってもらうことにしました。
用紙サイズの設定は、プリンタの設定内で”ユーザー定義サイズ”を新規に
作っておいて、それを使ったほうが手っ取り早かったようで・・・
つうかさ、VBでmemcpyなんて使うなよ。 普通に動作保障ないぞ。 まず、変数のアドレスを取得するところからして保障なし。
>>771 基本的に、業務で扱ってるデータで二元配列にしなければいけないデータがないってのもあるけど、
二元配列自体を避ける。
(ベーシックのループ処理、配列処理の遅さを考慮)
で、もう変更できない状態でやらなければいけないなら、ループでべたにやる。
memcpyなんか使うよりはセーフティー。
大体さ、memcpyをVBで使うなら、OLEとかまで勉強して、VBが変数をどのようにして持つかまで
勉強しないと駄目だべさ。
勉強した上でmemcpy
バイト型って0〜255の範囲の値だよね? なぜ長整数型に変換するんだろう…? よくわかんねぇ。
>>774 LongがByteの配列に入ってるからLongに戻したいってだけだべ?
ただ、>766のコードじゃうまくいかないのではと思ってるが。
>>775 ああーなるほど、
2,147,483,647 = &h7FFFFFFF
・
・
0=&h00000000
-1=&hFFFFFFFF
・
・
-2,147,483,647 = &h80000000
ってのを、例えば2,147,483,647なら
b(0)=&hFF
b(1)=&hFF
b(2)=&hFF
b(3)=&h7F
ってな感じでバイト配列に放り込んでるのか。
>>776 -2,147,483,647 = &h80000000
. ↑
無限ループしちゃってるみたいなんですけど、強制終了しかないですかね・・・(´・ω・`)
初めまして。みなさん高度なことを質問されているようで恐縮ですが… 描画系のメソッドの色指定にアルファ値を含めることは可能でしょうか? (Picture1.PSet(X,Y),RGB(R,G,B)←ここをRGBAにしたい。) RGBAのような指定の仕方がありましたらぜひご教授ください。 .Netではいろいろやって可能のようですが、私にはチンプンカンプンだし、 VB6しか持っていないのでやろうとしてもできません。 どうかよろしくおねがいします。
>>781 2000/XPにはAPIがあったような気がするし(だれかおしえて)、
DirectX使ってもできそうだけど、計算でやるならば
加算結果:R,G,B
加算元:の色r1,g1,b1
加算したい色:r2,g2,b2
アルファ(0.0〜1.0):A
とすると
R=r1*A+r2*(1-A)
G=g1*A+g2*(1-A)
B=b1*A+b2*(1-A)
アルファが0〜255なら割っておくこと
>781 BitMapならAlphaBlendAPIを使えばいいと思うんだけど、 使ったことはないから何ともいえん。誰か補足よろ。 でもDirectX使ったほうが早いと思うな。
784 :
デフォルトの名無しさん :03/12/25 15:05
IrfanViewという画像ビューワーソフトのプラグインに SFF(Structured Fax File).DLLというファイルがあるのだけれど これをVBに組み込んで PictureBox に 表示する方法等ご存知の方いらっしゃいませんでしょうか? ※Structured Fax File … 一つ一つの画像のスプライトをグループ化して ***.sffの一つのファイルにまとめたもの。 Public Declare Function ReadSFF Lib "SFF.dll" () のように組み込めばいいような感じはするのですが、 今イチDLLを組み込むことに慣れていないもので・・・ このSFF.DLLを使ってのプログラミング経験のある方いらっしゃいませんでしょうか?
786 :
デフォルトの名無しさん :03/12/26 11:04
すいません、質問です。 自作アプリでバージョン表示のダイアログを出しているんですけど プロジェクトのビルドごとにバージョン番号を書き換えるのが面倒なので できれば自動的に値を取得したいと思っています。 .NETでのやり方はGoogleで検索して見つけたのですがVB6でのやり方がわからず困っています。 実行時に自分のプログラムのバージョン情報を取得するのってどうすれば良いんだすか?
>786 App.MajorとApp.MinorとApp.Revisionを使え。
vb6って買えばいくらくらいなん? オレもやってみるかな
>>788 検索すればすぐ分かるような事をすぐ人に聞くような軽い気持ちじゃ
プログラムなんて習得できないよ。
コントロールボックスの終了の×ボタンだけ非表示 または押せないようにすることは可能でしょうか? 最小化・最大化は残したいので。
>>791 ありがとうございます。超急いでたもので。
793 :
デフォルトの名無しさん :03/12/26 15:36
素人が挑戦しているのですが、行き詰ってしまいました。 よろしくお願いします。 inputboxで日付を受け取ってB2セル日付のデータと比較するだけなのですが、うまくいきません。 日付の入力形式は 2003/12/24、コーディングは以下のとおりです。 Dim idate As Variant idate = InputBox(prompt:="日付を入力してください") Range("A2").Select Range("A2").Formula = "=if(B2)>=datevalue(""idate""),""new"","""")"
Dim idate As String If IsDate(Range("B2").Formula) = False Then Exit Sub Do idate = InputBox("日付を入力してください") If Len(idate) = 0 Then Exit Sub If IsDate(idate) Then Exit Do Loop If CDate(Range("B2").Formula) >= CDate(idate) Then Range("A2").Formula = "new" Else Range("A2").Formula = "" End If
795 :
デフォルトの名無しさん :03/12/27 00:29
ウェブブラウザコントロール上もしくは画面上の、 特定の場所の色を取得するにはどうすればよいのでしょうか?
>>794 ありがとうございます。早速やってみます。
>>795 Private Declare Function GetDC Lib "user32" (ByVal hWnd As Long) As Long
Private Declare Function GetPixel Lib "gdi32" (ByVal hDC As Long, ByVal nXPos As Long, ByVal nYPos As Long) As Long
Private Declare Function ReleaseDC Lib "user32" (ByVal hWnd As Long, ByVal hDC As Long) As Long
Private Sub Command1_Click()
Dim lngDC As Long
Dim lngColor As Long
lngDC = GetDC(0)
lngColor = GetPixel(lngDC, 1, 1)
Debug.Print Hex$(lngColor)
ReleaseDC 0, lngDC
End Sub
798 :
デフォルトの名無しさん :03/12/27 12:09
質問です。 TextBoxをサブクラス化してCtrl+Aで「全てを選択」するようにしたのですが、 Ctrl+Aを押したときに、「キン」という音が鳴るのです。 これは無効な操作をした時に出る音なのですが、 例えば、NoteパッドでCtrl+Qを押したりした場合に出る音です。 この音を出さないようにする方法はないでしょうか? Ctrl+AのKEYDOWN, KEYUPイベントを拾ったときにオリジナルな WindowProcを実行しないようにしてみたのですが、やっぱり音が出ます。
799 :
デフォルトの名無しさん :03/12/27 12:32
VBスクリプトにて、 長い形式のDate(日付)を出力したいのですが、 Format関数が使用できません。 どうしたら良いでしょうか?
>>797 ありがとうございます。
おかげでできました。
>>799 FormatDateTime()じゃだめ?
>>801 おかげでできました。
どうもありがとうございました。
Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer) If (Shift = vbCtrlMask) And (KeyCode = vbKeyA) Then Text1.SelStart = 0 Text1.SelLength = Len(Text1.Text) KeyCode = 0 End If End Sub
>>803 ありがとうございます。
でもやってみたんですが、音がなります。。
KeyCode=0だけではダメみたいですね。
鳴らしてるのはTextBoxコントロールなんでしょうかね。
なんか違うような気がしてきました。
805 :
デフォルトの名無しさん :03/12/27 14:10
VBからPL*SQLってどうやったら実行できるの〜? 学校に誰もいないからわからないよー
あなたも家に帰りなさい。お気をつけて。
807 :
デフォルトの名無しさん :03/12/27 16:56
コードの画面でマウスのホイールボタンが利かないんですが仕様ですか?
すみません。教えてください。 よくアプリケーションでヘルプとかにリンクが貼ってあって 押すとブラウザが立ち上がってヘルプページに飛んだりしますが あれはどうやってやっているのでしょうか??
>>809 アプリケーションからヘルプを起動して、そのヘルプからブラウザにURLを渡したいのか、
アプリケーションからブラウザにURLを渡したいのか、どちらなんだ?
あいまいに書いた文章が思ったように解釈されないように、
あいまいに書いたプログラムは思ったように動作しない。
的確に表現するよう心がけよ。話はそれからだ。
「ヘルプからブラウザにURLを渡す」というのがどういうのかわかりませんが、 「押すとブラウザを立ち上げてアプリケーションからプラウザにURLを渡して 表示させる」ということです。 失礼しました。
>>810 ' 指定したURLをブラウザで開く
ShellExecute Me.hwnd, "Open", "アドレス", _
vbNullString, App.Path, 1
Private Declare Function ShellExecute Lib "SHELL32" Alias "ShellExecuteA" (ByVal hWnd&, ByVal lpOperation$, ByVal lpFile$, ByVal lpParameters$, ByVal lpDirectory$, ByVal nShowCmd&) As Long
Private Sub mnuHelpOnline_Click()
ShellExecute Me.hWnd, "Open", "
http://www.google.co.jp ", vbNullString, "C:\Program Files\Internet Explorer\iexplorer.exe", 5
End Sub
で解決いたしました。ありがとうございました!
すいません。 文字数にあわせて(計算して)テキストボックスの大きさを変えたいのですが上手くいきません。 20桁分くらいのテーブルを持たせればいいのでしょうが、 普通はどうやって対応するものなんでしょうか?
おしえてください VB5.0で作ったプログラムを配布する場合 必要ランタイムのバージョンは 最新で大丈夫なのでしょうか? おながいします
>>816 手元に VB 無いから検証できないけど、
With Text1
.Width = .TextWidth(.Text)
End With
ぐらいでできなかったっけ ?
VB6.0でタブブラウザを作ろうとしているんですが Dim iCnt as Integer iCnt = iCnt + 1 Load webbrowser(iCnt).GoHome みたいな感じでやれば、Form上に貼り付けたwebbrowserコンポーネント を複数ロードは出来るんですが、これをタブと関連付けて、タブを閉じた場合に タブを閉じた数だけ添え字を詰めてやらなければならないんですが どうしたものか・・・ 単純にUnloadするだけでは閉じたタブの添え字が抜けてしまうもので。 webbrowser(0) Google webbrowser(1) Yahoo webbrowser(2) Infoseek ↓ Yahooのタブを閉じると webbrowser(0) Google webbrowser(1) Infoseek としたいのです。 どなたか教えてください。お願いします。
820 :
デフォルトの名無しさん :03/12/28 11:17
VBScriptでAPIのGetKeyState関数を使用したいのですが どうすれば良いでしょうか?
>>816 テキストボックスの裏側にAutoSize=Trueにしたラベルを置いて
Private Sub Text1_Change()
With Text1
Label1.Caption = .Text
.Width = Label1.Width
End With
End Sub
みたいな感じ。幅は適当に調整しる
質問です。 VB6.0で今、Accessのフロントエンドを作っています。業務用パーソナル アプリケーションで営業の方々に持たせるものなのですが、 Accessですと、サブフォームのデータグリッドのかく升目でいちいち、 商品IDだのコードだのを入れるのではなく、ルックアップさせて、商品名 を選択するとそれにまつわるものが ずらーーーっと引っ張ってこれますよね? あれをVBで実現させたいのですが、標準のコントロールですと出来ません。 何かやり方があるのでしょうか?それかこれを実現できるOCXがあったら 是非教えてください。
コマンドボタンをクリックすると(テキストを表示するように)右にhtmlを表示するようにしたいのですが、 どうすればよいでしょうか?
824 :
デフォルトの名無しさん :03/12/28 19:56
ageておきます。
>>823 他人にわかるように質問する技術を勉強してからにして下さい
ありがとうございます
828 :
デフォルトの名無しさん :03/12/29 05:08
正負を見分ける関数とかってあります?
見分ける意味ってある? 正か負にしたいなら、絶対値だけわかればいいわけだし。
VBでソフトをつくりXPでコンパイルして実行するとどうしても、 XPのLUNAが適用されずにボタンやプログレスバーが、クラシック表示 になるんですけどどうすればLUNAを適用させて、ボタンやらを表示できるんでしょうか? なにかAPIでもあるのですか、急な質問ですいません
832 :
デフォルトの名無しさん :03/12/29 10:09
>>831 .manifest を書く。もしくはリソースに組み込む。
833 :
デフォルトの名無しさん :03/12/29 11:05
>>825 VB以外も理解できるようになる技術を勉強してからにして下さい
834 :
デフォルトの名無しさん :03/12/29 11:28
VBScriptでWin32APIを使用したいのですが、 DeclareステートメントがVBScriptでは使用不可のようです。 どうすれば良いのでしょうか?
835 :
デフォルトの名無しさん :03/12/29 12:15
>>823 意味がわからない。TextBox の代わりに WebBrowser コントロールを使う、って
ことかな?
>>833 (・∀・)カエレ!!
>>834 API を呼ぶ ActiveX DLL を作って、それを VBS から呼び出す。
>>832 どうもありがとうございました
中1なのでとても参考になりました
837 :
デフォルトの名無しさん :03/12/29 13:22
質問です。 Access2000のリストボックスで、値リストをRowSouceにセットする際に、 大きな文字列(とは言っても せいぜい3〜4キロバイト程度の大きさ) で「このプロパティの設定値が長すぎます。」とエラーになってしまいます。 ひょっとしてこれ以上の値はセットできないのでしょうか?
839 :
デフォルトの名無しさん :03/12/29 16:18
VB6(SP5) + Spread6.0(GreapeCity) で作成したプログラムを異なる複数のOS(WinXP Pro/Home、Win2000、Win98SE)に 配布しようとした場合に一番安全な配布方法はどんな方法でしょうか? 以下のように3つに分けて別々に入れさせる方法を考えたのですが 1.VB6(SP5)のランタイム →Vectorとかに落ちてるやつ 2.Spread6.0の必要なdll →ファイルコピー&レジスト 3.プログラム →EXEのコピーのみ 2のSpreadの動作に必要なファイルの扱いが良くわかりません。 プログラムと一緒のフォルダに入れるべきなのか Systemフォルダに入れたほうが良いのか... サイドバイサイドという方法まではたどりついたのですがまだ理解できてないです。 (↑これについて解りやすく解説してあるサイトとかないでしょうか?)
>>839 4.VSI
5.ディストリビューション ウィザード
6.その他のインストーラ作成ソフト
>>840 それを分けて入れてどうするのかと小(ry
842 :
デフォルトの名無しさん :03/12/29 16:47
>>837 駄目って言われるなら駄目なんじゃない?
いったんテーブルに突っ込んでおくとか。
>>838 回答しないなら(・∀・)カエレ!!
>>839 Install Studio/Install Shield できちんとやる、ってのが一番安全。
サイドバイサイドについては、理解なんてものは必要ないくらい簡単。
単に、.local ファイルを置くだけだから。Web でも記事が読めるところが
あったね。
843 :
デフォルトの名無しさん :03/12/29 16:48
>>839 > 2のSpreadの動作に必要なファイルの扱いが良くわかりません。
> プログラムと一緒のフォルダに入れるべきなのか
> Systemフォルダに入れたほうが良いのか...
サイドバイサイドを使うなら、ローカルフォルダ。そうでないなら、System フォルダ、
ってのが正解。
845 :
デフォルトの名無しさん :03/12/29 18:52
>>844 無理ではない。けど、それを作るのに一月かかるなら、買っちゃった方が安い、
ってことでみんな作らないだけ。
846 :
デフォルトの名無しさん :03/12/30 04:20
>828 激しく亀レスではあるが実はsgn関数というものが存在する・・・
848 :
デフォルトの名無しさん :03/12/30 10:39
>>847 Install Studio は、Windows Installer に対応してなかったはず。ということで、お勧めは
Install Shield だね。
> サイドバイサイド
Windows 2000 登場とともに大々的に取り上げられたね。なので、ちょっと古めの
記事を探してみるのがいいかな。とはいえ、あんな単純なもの、何がわからないのか
わからんけど。
要するに、実行ファイル名.local ってファイルを置いておくと、レジストリを無視して
ローカルフォルダから COM コンポーネントが読み込める、ってだけなんだけど。
>>848 存在を知っただけで、実際どのようにするか知らなかったので
簡単なのか難しいのかも解ってなかったです。
そんなに簡単だったのですね...
やってみます。
ありがとうございました。
850 :
デフォルトの名無しさん :03/12/30 12:27
はじめまして。 VB6.0のフォームにWebBrowserコントロールを貼り付け、 NavigateメソッドでJava Plug-inのあるページにアクセスしたのですが、 グレーの長方形が出てくるだけで、Plug-inが表示されません (タスクトレイにJavaアイコンも出ない)。 ちなみに、Java Plug-inはインストール済みで、 バージョンは1.4.2-b28、 IEを普通に起動してアクセスしたときは、 Plug-inが正常に表示されています。 誰か原因がわかる人がいたら、教えてください。 お願いします。
bmpからリージョン作りたいんだが 単純な形と違って切り方がわからない。 bmp解析してゴニョゴニョとかしなきゃ無理なのかな。 実現の仕方おせーてplz
852 :
デフォルトの名無しさん :03/12/31 00:04
サイドバイサイドで質問です。 ローカルフォルダに置くComコンポーネントは やっぱりレジストリ登録が必要になるのでしょうか?
853 :
デフォルトの名無しさん :03/12/31 00:21
>>851 マスク画像を作って、そこからパス→リージョンみたいな変換ができなかったかな?
>>852 登録は必要(だったはず)。でも、フルパスで登録する必要はない。
前回終了時のウィンドウの位置を記憶するためにはレジストリは必要ですか? 出来れば使いたくないのですが・・・。
856 :
デフォルトの名無しさん :04/01/01 20:00
VB初心者の質問です。 1つのフォーム上に2つのDataComboを配置します。 DataComboのデータ元となるのテーブルはそれぞれ別となっています。 ※DataCombo1のデータ元となるテーブル 【分類ID】←フィールド名 1 2 3 ※DataCombo2のデータ元となるテーブル 【分類ID】【商品名】←フィールド名 1 大型電卓 1 小型電卓 2 ファイルボックス 2 クリアファイル 3 CD−R DataCombo1で"2"を選択した場合に、 DataCombo2のリストに"ファイルボックス・クリアファイル"のみ表示させるには どのように処理すればよいでしょうか? Visual Basic 6.0 SP5 Access 2000 を使用しています。 どなたか分かる方、教えて下さい。よろしくお願いします。
>>856 大雑把に書くと、
Sub DataCombo1_Change()
Set DataCombo2.RowSource = 「SELECT * FROM table2 WHERE 分類ID=?」
End Sub
・・・って解釈でいいのかな?
858 :
デフォルトの名無しさん :04/01/01 22:01
>>857 即レスありがとうございます。
以下のように書いて実行してみたのですが
Private Sub DataCombo1_Change()
Set DataCombo2.RowSource = "SELECT * FROM table2 WHERE (" & DataCombo1.Text & ")"
End Sub
オブジェクトが必要ですというエラーがでてしまいます。
『分類ID=?』の部分は具体的にどのように書けばよいのでしょうか?
859 :
デフォルトの名無しさん :04/01/02 01:47
Set DataCombo2.RowSource = "SELECT * FROM table2 WHERE (分類ID = '" & DataCombo1.Text & "')" とかかな。このままの形じゃエラー処理とかできないのが個人的にはいやだけど。
Kさん 好循環 Aさん 悪循環 (健康体) (喘息) 1.(神が喘息であるかないかを決める) 2.K 喘息でない人 A 喘息の人は は体力がある 体力がなくなる 3.K A 行動力、 五感(嗅覚)が鈍り感性が変化する 4.K&A 神は異常な感性の人間は本来人に迷惑をかけ るから外に出てはいけないと思っている。 5.K 変化なし A アトピーになる 6.K 正常な感性 A 外に出なくなりさらに異常な感性になる 7.K 正常な人間 A 異常な人間(レッテル) 8.K&A 死 9.K&A 来世 10.K&A 神は異常な人間は人に迷惑をかけるので行動 を抑制する必要があると思っている。 11.K&A 神が喘息であるかないかを決める 12.K 喘息でない A 喘息である 13.K&A 1.に戻る これは事実。広めようぜ 解決法:寝て起きて、やな気分でも、続けるけること。 体力をつけると感覚が正常に戻り、 アトピーも快癒に向かう。 目安としてグランドを10週くらい。 あとはウォーキング 2.3時間を目安にウインドーショッピングや本屋めぐり
861 :
デフォルトの名無しさん :04/01/02 02:40
>>856 です。
>>859 ダメでした。やはりエラーを回避できません。
自分でがんばって他の方法を考えてみます。
レスありがとうございました。
ぎゃふん Set DataCombo2.RowSource = コネクション.Execute("SELECT ・・・")
ひでぶ
誤爆というか、絨毯爆撃みたいね。 三面型なんて用語、はじめて見た。3ペインのことか。
867 :
デフォルトの名無しさん :04/01/04 14:11
質問です。 アクティブなアプリをチェックする方法を探しています。 EnumWindows()ではアプリ名ではなくてウィンドウ名になるので これではうまくいかないのです。 アプリ名とはタスクマネージャで出てくるプログラムのタイトルです。 何かいい方法はないでしょうか?
追記です。 「アクティブ」というのはそのアプリのウィンドウの一つが フォーカスを持っているということです。 アクティブなアプリが一つもないこともありえます。
869 :
デフォルトの名無しさん :04/01/04 16:29
>>867-868 GetForegroundWindow() でウィンドウハンドルを取得して、あとはそのウィンドウハンドル
からごにょごにょ。
870 :
デフォルトの名無しさん :04/01/04 17:43
VBでweb上のHPをhtmlファイルとしてDLし、それを、
Set fso = CreateObject("Scripting.FileSystemObject")
Set ojText = fso.OpenTextFile("c:\temp.html", 1, True, True)
このように、テキストストリームオブジェクトとして
読み込むプログラムを作成しております。
通常のHpは問題ないのですが、一部のHPでなぜか文字化け
してしまいます。
例グーグルのトップページを読み込むと
http://www.google.co.jp/ 繧ヲ繧ァ繝悶・繝シ繧ク縺九i讀懃エ「
このようになります。
DLしたファイルを、ブラウザ又はテキストエディタで開くと
問題なく表示されるので原因がわかりません。
何が原因で、どのような回避方法があるか、
おわかりになる方はおられませんか?
>>870 日本語サイトの文字コードには大別して
UTF-8、Shift_JIS、EUCがあることは知ってるかね?
872 :
デフォルトの名無しさん :04/01/04 17:53
>>871 それは知ってますが?
htmlファイルをエディタで開くと問題なく、
テキストストリームで化けるのが謎なのですが・・・
原因わかりました。 変換コードの記述ミスでした。 故にもうイイです。
冬厨は(・∀・)カエレ!!
なにここ、デバッグもやってもらえるの?
NKFでJIS→SJIS→UNICODEの変換をしているのですが上手くいかないです。 どなたかNKFに詳しい方、過去に似たようなことがあったという方、教えてください。 漢字表の重複ではありません。 45 44 43 66 21 21 45 50 3B 56 4C 40 (JIS) ↓NKF SJIS ↓STRCONV 93 63 81 40 93 6F 8E 75 96 BE (UNICODE "中"の文字が消えてしまう) 93 63 92 86 81 40 93 6F 8E 75 96 BE (UNICODE 正しくはこうなるはず)
補足します。全角空白2121があるため、 NKF側のNULL付加で1文字消えているのかと思ったりしましたが、 それはありえないような気がします。またバッファは4倍以上確保しています。
879 :
デフォルトの名無しさん :04/01/05 14:10
TextBoxの選択領域の背景色を変えたいんですが、 APIを使ってもできないんでしょうか? TextBoxのBackColorを黒にした場合、選択領域かどうかが 分からなくなってしまうので。
880 :
デフォルトの名無しさん :04/01/05 14:27
>>879 自己レス。
SetSysColors()でできることが分かりました。
これはシステム全体に影響が及んでしまいますが。
>>301-320 301で質問させて頂いた者ですが、その後WinXP HOMEを再インストールしても、
また友人のPC(WinXP HOME)で試してみても、データ用に設置したwinsock
コントロールのDataArrivalイベントが発生せず、データ(リスト)が
取得できません。 FFFTPなどは問題なく動作するのですが...
助けて下さい。 よろしくお願い致します≦(_O_)≧
あの・・・どなたかご存知でしたら 教えて頂けないでしょうか。 VB5.0で作った、プログラムを 他のPCで動かしてみたいのです。 『VBランタイム 6.0 [SP5]』 ↑を移植先のPCに入れれば大丈夫 なんでしょうか? SP4とか5の意味がわからなくて 悩んでます。どうか神様おねがいします。
だれか答えてやれよ・・・やれやれ
(・∀・)**クシ*エン*シタ!!
リストビューの内容をPutで一気にファイルへ保存する方法ってありませんか? 昔、雑誌のTipsで見た記憶があるのですが……。
>>886 こんなの?
'書き込み
Private Sub Command1_Click()
Dim i As Long
Open "test.dat" For Random As #1 Len = 255
For i = 0 To List1.ListCount - 1
Put #1, , List1.List(i)
Next i
Close #1
End Sub
'読み込み
Private Sub Command2_Click()
Dim buf As String
Open "test.dat" For Random As #2 Len = 255
Do Until EOF(2)
Get #2, List2.NewIndex + 2, buf
List2.AddItem buf
Loop
Close #2
End Sub
889 :
デフォルトの名無しさん :04/01/06 10:50
ある画像の上に、透明度を指定して多角形(ポリゴン)を描画したいんですが、 どのような方法が一番適切でしょうか?
891 :
きのこ王子 :04/01/06 12:24
VBランタイムって再配布は可能なんですか?
892 :
デフォルトの名無しさん :04/01/06 12:46
なんだか どんどんレベルが低くなっていくな・・・
893 :
デフォルトの名無しさん :04/01/06 14:06
>>892 そんなことはない、昔から低かったぞ、と書こうと思って読み直してみたら、ほんとうに
レベル下がってるな。
>>887 Listではなく、ListViewです。
現在VB6とADSIを使用して、ユーザーの情報を引き出すプログラムを 作っているのですが、どのようにしたら、電話番号を引き出せるのでしょう? 色々WEB上に載っている方法を試したのですが、うまくいかないので どなたか知っていたら、教えてください。 使用OSはWindows2K Pro SP4 VB6エンタープライズ版 です。
>885 今大体同じような処理を手がけているけど、自分はListItems.Count分roopし、 その中で(ColumnHeaders.Count - 1)回roopで各項目の値をString型変数に 格納して、それを1行として出力しているよ。そんな感じじゃダメなのかい?
ごめ…>885じゃなくて>886です。両者ともスマソ
loop
>900 ごめ…素で間違えてたYO。ハズカチー!!!!!
>897 携帯サイトではなく、業務上ユーザーの電話番号を 調べるソフトが必要になったのです。 別に外部に公開する物ではないです。
質問です、どなたか回答お願いいたします。 学校課題のVBをチェックしていただきたいのですが、VBのアップの仕方がわかりません。 どのようにアップすればよろしいでしょうか?
ありがとうございます。 宿題ソース置き場の176です。 お願いいたします。
>>905 ここはそういうところなのか?
宿題スレに行けば?
ここの住人さんで、WinXP Homeを使われている方、いませんか?
908 :
デフォルトの名無しさん :04/01/08 10:13
動作環境としてはWinXP HOMEあるよ 開発環境はWinXP Pro ついでに質問も書いとくです。 この前 WinXP Proでランタイムセットアップするやつ作って HOMEに入れようとしたらエラーになった 原因まだ良く解ってないけどProはSP1あたってて HOMEはSP1あたってない状態だった。 これが原因ってありえる?
909 :
301 ◆si65ga2MW6 :04/01/08 10:34
>>908 エラーと言うのは、セットアップ実行したら、できなかった。
と言うことでしょうか? SPはOSのもの?VB?
OSにしろ、VBにしろ、SP当たって無くても、セットアップくらいは
なんともないと思いますが。。。
私の抱えている現象と関係有るのかな?
W2K proでVB6(SPなし)でwinsock.ocxを使って開発したFTPプログラム(EXE)を、
WinXP HOMEで実行すると、FTP鯖から送られてくるデータを受信できない
現象に悩んでます。 WinXP Proでは問題なく動作するのですが。
詳細は
>>881 >>301-320 に。
>>909 状況としてはあまり関係ないかもしれません・・・^_^;
今日時間とって調べたのでとりあえず書いておきます。
SP1はWindowsXPのServicePackの事です。
WindowsXP Pro SP1でCOMCTL32.OCX、MSCOMCTL.OCX等が含まれた
ランタイムを作成し SP1があたってない WindowsXP(Pro/Home)に
ランタイムを入れようとすると次のようなメッセージが出る。
「システムファイルを更新しようとしています・・・・再起動してください・・・」
で 再起動してもセットアップは終わってなくて、もう一度セットアップを実行すると
同じことの繰り返し。
SP1をあてる事によってこの現象は出なくなり正常にセットアップできた。
これはインストール先のWindowsXPにもあらかじめSP1入れておくしか
対処方法はないって事なのかな?
誰か知ってたら教えて
だから、2バイト文字のユーザ名をつけるなとあれほど(ry
914 :
デフォルトの名無しさん :04/01/08 22:13
#1970/1/1 9:00# + 1069160036 / (60*60*24)
918 :
デフォルトの名無しさん :04/01/09 17:21
Private Sub Picture1_MouseUp _ (Button As Integer, Shift As Integer, _ X As Single, Y As Single) に配列変数x(5),y(5)を宣言したいのですがどうすればいいのでしょうか?
ヘルプ嫁よ
920 :
デフォルトの名無しさん :04/01/09 17:55
質問です。 メニューエディタで作成したメニューの色を変更するのは 可能でしょうか?
>>920 そんな事するなよ、とつっこんでおく。
まあオーナードローでどこまでできるか知らんが、めんどくさそうだな
922 :
301 ◆si65ga2MW6 :04/01/09 19:13
>>920 , 921
やっぱり、変なことしないほうがよさそうですね。
ありがとうございます。
書籍スレで聞こうとも思ったんですが、C++の話ばっかなんでこちらで質問させていただきます。 VB6.0のお勧めの書籍とかってあったら教えていただけませんか? ちなみにラーニングエディションなんでそれに対応したものをお願いします。 すれ違いだったら申し訳ない。
>>924 書店ではもうVB.NETの本ばかりになってるからムリだ。
何をするためのオススメなのかによって変わってくると思うが
>>926 入門書です。
さっきアマゾン少し見たんですが.netの本ばっかで、、、。
余談ですが、Javaの経験が少しあります。
>>929 はるひこかぁ・・・。
この人JavaとCも入門書出してるんですけど、評判悪くてハズレなんですよね。
MSDNインストしてから考えてみます。
他にも良書あったら教えてください。
良書というか、カタめの言語仕様本でいいんじゃ? HowToなんざWebにいくらでも転がってるから本はほとんど無意味かと。
932 :
デフォルトの名無しさん :04/01/10 12:11
すみませんが、教えてください。 チャットで一定時間内に発言せねば自動退室させられるところがありまして、 「待機中」など自分で設定した文字列を一定時間毎に自動でチャットウィンドウのテキストボックスに ペースト+Enterさせるプログラムを組みたいのですが 「他のウィンドウのテキストボックスにペースト」させるやり方が分かりません。 「そのウィンドウをどうやって指定するか」も分かりません。 色々入門書など読みながら頑張っているのですがなにぶん素人なもので・・・ 是非教えてください。お願い致します。
AppActivate SendKeys FindWindow SetWindowText Spy++ SendMessage WM_COMMAND ShDocVw.ShellWindows
>>935 退席中のみ10分置き使い、自分がPCの前に居る時はなるべく使わず、
他の人に迷惑を掛けないよう心がけます
937 :
301 ◆si65ga2MW6 :04/01/10 13:18
>>932-936 むしろVBじゃなくて、JavaScriptの方が簡単に手軽にできるのでは?と。
ローカルにhtmlを作成し、フレームで目的のチャットURLを開き、
JavaScriptで定期的に特定フォームにSUBMITを送るとか。
チャットログとフォームが別れているなら、フォームの方をローカルにコピーして
Scriptを加えると言うのもありかと。
※後者の場合、CGIの方で弾かれる可能性もあるけど。
938 :
デフォルトの名無しさん :04/01/10 16:17
MSNメッセンジャーの最小化のアニメーションをVB6.0で実装する事は 可能でしょうか? タスクトレイに格納する時にできればいいなと思いまして。 よろすく
最小化じゃなくて閉じるボタンを押してタスクトレイに格納する時の処理でした。 スマソ
940 :
デフォルトの名無しさん :04/01/10 16:48
クリックした点を中心として、そこからドラッグして離した点までの長さを半径とする星(☆) の描画方法を教えてください。 式はこんな感じみたいなのですがよく分かりません。 x=(クリックした点)+(半径)×cos(k) y=(クリックした点)-(半径)×sin(k)
sndPlaySoundでwavファイルを再生したのを中断する方法がわかりません 教えて皆々様
>>940 Option Explicit
Private cx As Single, cy As Single
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
cx = X
cy = Y
End Sub
Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
Const pi As Double = 3.14159265358979
Dim r As Single, i As Integer, x1 As Single, y1 As Single, x2 As Single, y2 As Single
r = Sqr((cx - X) ^ 2 + (cy - Y) ^ 2)
'Circle (cx, cy), r
x1 = cx
y1 = cy - r
For i = 2 To 10 Step 2
x2 = cx + r * Cos(2 * pi / 5 * i)
y2 = cy - r * Sin(2 * pi / 5 * i)
Line (x1, y1)-(x2, y2)
x1 = x2
y1 = y2
Next i
End Sub
944 :
デフォルトの名無しさん :04/01/10 19:12
最近、FTPクライアントを作ってます。 Win32APIを使って、FTPサーバへの接続、ファイル送信、 ファイルダウンロードなどはできるようにしました。 サーバ側のファイルも操作したいと思ったのですが、 (カレントディレクトリの変更、ファイル名の変更、ファイルの削除など) どうやったらいいのかわからなくなって、途方に暮れています。 どなたか、ヒントか参考になるサイト、書籍などご教授ください。
946 :
デフォルトの名無しさん :04/01/10 19:57
今、きれいな書式でテキストの出力を目指しているのですが、 AddSpace(str,10) とかしたら、10文字分のスペースの先頭にstrに格納されている文字が つまった文字列を出力する。という関数を作りたいんです。 |←10文字スペース → | |ほにゃほにゃ | |432lhds | ←のような感じ で、作ったんですが、漢字とアルファベットなどの大きさが違うために うまくできません。どなたか、うまい方法を教えてください。 もしくは、そういった用途で便利な関数が載っているサイトがあったら 教えて下さい。 房な質問ですが、何とぞよろしく。(要望があれば、私の作ったクソ関数 のソースもさらします
947 :
デフォルトの名無しさん :04/01/10 19:58
上でほにゃほにゃと432lhdsの入っているスペースはいっしょです。 (書き込んだら、ずれちゃいましたね)
>>937 javaスクリプトは全く分からないので・・・
要はtextboxに入力したテキストをcommandをクリックすることによって、
textbox2に入力したアドレス、もしくはタイトルバーのウィンドウに
コピ&ペーストしたいな、と。
ヘルプを見てもコードの記述が分からなくて・・・
どなたか宜しくお願い致します・・・
>>946 テキストの出力とはファイルでいいのか?
閲覧するときのフォントは考慮しなくていいのか?
まあ文字が半角で何個分かをカウントしてスペース足せばいいだけだがな。
>>951 さん
いえ、そのウィンドウの持つテキストボックスです。
VBの入門書片っ端から読んだんですが、こういったことのやり方書いてるのが
なくて・・・何卒宜しくお願いいたします
LenB(StrConv("123あいう", vbFromUnicode)) iiiiii← WWWWWW← あああ← ううう←
Private Sub cmd1_Click() Dim title As String title = txt1.Text ' 1つ目のテキストボックスに、対象のウィンドウのタイトルを入れ Clipboard.SetText txt2.SelText '2つ目のテキストボックスの内容をコピーし AppActivate title ' そのウィンドウをアクティブにして End Sub そのウィンドウのテキストボックスに、2つ目のテキストボックスの内容を送信&エンターしたいわけです。 〜分置きに自動で・・はタイマーコントロールとloopで何とかするとして。 ほんとはそのウィンドウをアクティブにせずにやりたいんですけど。 恥ずかしくなるほど初心者でして・・・これが限界です。何卒ご教授を。
>>952 だからフォントは考慮しなくていいのかと聞いているんだよ
プロポーショナルだったら無理だしOSのバージョンによってもサイズがかわるので
スペースのキャラクタコード入れればいいってもんじゃない。
モナー板などで勉強しておいで
>>954 >934が丁寧に教えてくれているのに、もったいない。
(T_T) 934さんのコードが解読できない・・・。 そのままコピペしても使えない・・・ 初心者で申し訳ない・・・
デスクトップアクセサリを作りたいのですが フォームを透明化する方法はありませんか?
>>958 Google フォーム 透過 リージョン VB
960 :
デフォルトの名無しさん :04/01/10 23:49
とあるサイトでこういうコードを見つけてコピペして実行しようとしたけど Findwindowのところでひっかかるんですがどうしたらいいですか? 電卓を起動して987と送るコードらしいのですが・・。 Private Sub cmd1_Click() Const WM_CHAR = &H102 Dim hwindow As Long hwindow = FindWindow("SciCalc", vbNullString) If hwindow = 0 Then On Local Error Resume Next Shell "calc.exe", 1 On Local Error GoTo 0 hwindow = FindWindow("SciCalc", vbNullString) End If If hwindow <> 0 Then PostMessage hwindow, WM_CHAR, Asc("9"), 0 PostMessage hwindow, WM_CHAR, Asc("8"), 0 PostMessage hwindow, WM_CHAR, Asc("7"), 0 MsgBox "OK" Else MsgBox "エラー" End If End Sub
>>930 林センセのVB本はいまいちで間違いないけど、大昔に出された、
Basicによるコーディングスタイルの本は名著だよ。当時まだVBは存在してなかった。
いまもオレの心のバイブル。そのくせ、正確なタイトルは失念(w
VBからISOイメージ作成って出来ないですかね? linuxとかだと標準機能でついてたりするみたいだけど Windowsでそれらしい解説サイトもないし・・・
>>963 > VBからISOイメージ作成って出来ないですかね?
できる。
ただし、お前が思っているように簡単にできるかどうかは知らん。
>>963 mkisofsを導入していれば、コマンドを渡すフロントエンド代わりを
VBにやらせることは出来る。
VB6で非アクティブ状態のときに ○○をする〜、って言う処理をしようと思ったのですが Private Sub Form_Deactivate() End Sub だと、どうもうまくいきません 誰か教えていただけませんか・・?
安易にネーミングからLostFocusなどと適当に答えてしまったけど、 ヘルプを確認したら見事にちがっていた(汗 DeactivateもLostFocusも、アプリケーション内でのフォーカス移動しか監視しないみたい。 うそを教えた罪の意識にさいなまれつつ(汗、調べた結果、 GetForegroundWindowで監視するしかないような気がする。 もし、いわゆる「常に手前に表示」をやりたいのなら、もっと手軽に実現できるので、 検索してみたらどうだろう。これはすぐ見つかると思う。
>>966 サブクラス化して WM_ACTIVATE を処理
起動時、フォームにおいてあるText1に クリップボードに保存されている文章を表示させるにはどうすればよいですか?
あ、できました。 スレ汚しスマソです。
972 :
デフォルトの名無しさん :04/01/13 23:22
ディストリビュージョンウィザードって 同じOSに入れるときにしか使えないのでしょうか?
>>972 一応、配布するターゲットと開発OSをあわせるのが定説と言われていたけどな・・・
あのウイザードつかうよりはVSIのほうがいいと思う。
なるべく古いOSで作ったほうがいいんでない?
975 :
デフォルトの名無しさん :
04/01/14 07:21 >>972 そういうオカルトに頼るのはやめなはれ。最終的に *.cab に含まれるファイルが
どこから来るのか調べれば、どうすればいいのかわかるでしょう。