トップページ⇒tech
1001コメント380KB

VB初心者質問スレ Part6

レス数が900を超えています。1000を超えると表示できなくなるよ。
0001引っ越しましたNGNG
前スレはこちら
  Part1 = http://piza.2ch.net/test/read.cgi?bbs=tech&key=968328471&ls=50
  Part2 = http://piza2.2ch.net/test/read.cgi?bbs=tech&key=990793224&ls=50
  Part3 = http://pc.2ch.net/test/read.cgi/tech/1000523122/
  Part4 = http://pc.2ch.net/test/read.cgi/tech/1006922992/
  Part5 = http://pc.2ch.net/test/read.cgi/tech/1010624646/

Win32 API関連スレ
  http://pc.2ch.net/test/read.cgi/tech/1006783012/l50

心得
壱.質問する前に過去ログにも目を通してみる。
弐.質問する前に MSDN などで調てみる。
参.VBScript もこのスレでOK。
四.インストーラーなどの質問もOK。
0809デフォルトの名無しさんNGNG
正確にいえばVBが内部に変数を用意してそのRefがわたされる。
subhoge (引数+0) とか書くのと同じことです。
0810デフォルトの名無しさんNGNG
>>808
かっこ「 ( ) 」という演算子だと思えばいいんではないかな。
Sub subHoge(ByRef i As Integer) だったとして、
Call subHoge( j ) は参照渡し、
Call subHoge( j + k ) は値渡し、
Call subHoge( ( j ) ) も値渡し。
0811805NGNG
>>808
ByValになるっていうのは言い方が悪かった。
たぶん内部的にはByRefで処理されている。
なぜByValのように見えるのかというと、括弧で囲むことで
変数がByRefで渡るのではなく、(変数)という演算結果が渡されるから。

Call foo( Clng(A) )←この場合Aが変わらないのは納得いくでしょ。
Call foo( (A) ) ←これはAがfooの引数の型に変換されるだけ。

> これが原因のバグってけっこうあるかも。
「基本はByValをつける」を守っていればあまり問題は無いと思う。

ただ Sub foo(i As Long) のような関数を
Dim i As Integer: Call foo(i) じゃ呼べないのに
Dim i As Integer: foo (i) だと呼べたり

Sub foo(udt As UserDefineType)のような関数を
Dim udt As UserDefineType: Call foo (udt)だと呼べるのに
Dim udt As UserDefineType: foo (udt)じゃ呼べない

という結果を見てユーザ定義型の場合はCallをつけなければいけないとか
変な勘違いをしている人がいるかもしれない。
0812デフォルトの名無しさんNGNG
>>811
深い。深すぎて、理解しきれない。
なんとなくならわかりかけてきたような気もするけど、気のせいかも。

0813797NGNG
>>798
>>799
ブロック崩しゲーム(アルカノイド風)で球がはね返るときにwavファイルを鳴らそうと思ったんですが、
sndPlaySoundではどうも処理に時間がかかるようで、壁やブロックに当たるところで少しのあいだ止まってしまうのです。
0814デフォルトの名無しさんNGNG
読み込みを先にしておけば。
0815デフォルトの名無しさんNGNG
>>813
非同期で鳴らしたら、まずいの?
0816800NGNG
>>803
わかった
やってみる、ありがとうおじさん
0817813NGNG
>>815
すみません、非同期ってなんですか?
0818デフォルトの名無しさんNGNG
>>817
フラグに SND_ASYNC を入れるといいぞ。
同期再生だと、再生が終わるまで関数が帰ってこない=固まる。
非同期再生だと、鳴らし始めたらすぐ帰ってくる。
あとは自分で検索してしらべた方が身になるよ。
0819デフォルトの名無しさんNGNG
質問です。
VB6+SP5でPrinterオブジェクトを使用して
B4サイズで印刷しようとしています。
(使用するプリンタのデフォルト用紙サイズはA4)

WinNT4.0では
PaperSize=12 (=VbPRPSB4)
でB4出力できたんですが
Win2000の場合、同じプリンタなのに
PaperSize=126
と指定しないと出力できません。(VbPRPSB4を代入したらエラー)
「PaperSize=126」はプリンタのデフォルト用紙サイズをB4にして
PaperSizeを求めたら出てきました。

このように、プリンタが同じでもOSが違う(ドライバが違う?)と
用紙サイズの指定が上手くできないのです。
「PaperSize=126」はプリンタ独自のB4サイズの値なのでしょうか。
もしそうだとすると、どのプリンタを使用するにしても
プリンタごとの「B4サイズの値(12なり126なり)」を
求めることはできないのでしょうか?

GetPrinter使ったりするのかな・・・
とは思ったんですが、行き詰まってます。
意味不明な長文ですみません・・・

0820デフォルトの名無しさんNGNG
>>819
漏れも昔ソレで困った事があった。
その時はマニュアルに「プリンタの設定はA4にしてください」って書いて終わりにしちゃった☆
テヘッ♪
0821デフォルトの名無しさんNGNG
ファイルリストボックスの中身をリッチテキストに表示して
それをクリックボタンを押して保存するときにRichTextBox1.SaveFile
で保存しようとしているのですがうまくいきません。
1というファイルが出来てその中に保存されています。
その1というファイルを開くと文字化けしています。
リッチテキストで開くとうまく表示されます。
どうしてうまく保存されないのでしょうか。


0822デフォルトの名無しさんNGNG
>>821

object.SaveFile(pathname[, filetype])

SaveFile メソッドの構文の指定項目は次のとおりです。

filetype 省略可能です。保存するファイルのタイプを整数または定数で指定します。設定する値については、次の「設定値」を参照してください。


設定値

filetype の設定値は次のとおりです

rtfRTF 0 (既定値) リッチテキスト形式 (RTF)。リッチテキスト ボックス コントロールの内容を .rtf ファイルとして保存します。
rtfText 1 テキスト。リッチテキスト ボックス コントロールの内容をテキスト ファイルとして保存します。

ヘルプ見てくれ。
しっかり書いてあるから。
RichTextBox1.SaveFile "C:\hogehoge\hoge.txt",rtfText
見たいな感じです。
0823デフォルトの名無しさんNGNG
このスレ見ながら苦闘3ヶ月。ようやくアプリケーション1つ作れました。
よかったら感想オネガイシマス。

ttp://www2.makani.to/akutoku/upload/dat/1015334740.lzh
0824デフォルトの名無しさんNGNG
>>823
403:アクセス不可
0825デフォルトの名無しさんNGNG
>>823
直リン不可。2ch不可。回線遅い。
今後気をつけましょう。
0826デフォルトの名無しさんNGNG
ごめんなさいです。
ttp://www2.makani.to/akutoku/upload/の[1015334740.lzh]をダウンロードしてください。
0827824NGNG
>>826
これなにするソフト?
0828デフォルトの名無しさんNGNG
厨房質問です。
ファイルの生成の仕方がわかりません。
ファイルに書き込みたいんじゃなくて生成したいんでう。
教えてください。
0829デフォルトの名無しさんNGNG
>>828
Open 開きたいファイル for binary as #1
close #1
0830デフォルトの名無しさんNGNG
>>827
URLの管理用に作ったものです。
簡単な検索機能が付いてます。
0831828NGNG
>>829
わかた、やってみるよ。ありがとう風のおじさん
0832823NGNG
LZHファイルです。解凍するといくつかのファイルが入ったフォルダが出来ます。
そのなかに、そーす.txtというファイルが入ってます。
そこにすべての元データが入ってますので、危険かどうかは分かります。
使うときは、使い方.txtを見てください。自動セットアップなんて高等技術はできませんので
手動でセットアップになります。
0833デフォルトの名無しさんNGNG
>>832
落としてみたけど、パス決めうちかよ!
プログラムのあるディレクトリパスはApp.Pathで取れますがな
0834824NGNG
>>830
K大学かい?exe作るときは注意すれ。
他にもC直下に置くなとかボタン置きすぎとか
Captionが無いコントロール山ほどあるとことか
デフォルトボタンとキャンセルボタン作れとか
つっこみ始めればきりがないが。

まあでも最初のアプリはこんなもんか。頑張れ。
0835823NGNG
>>833
そうなんですか!
今度直してみます。
0836823NGNG
>>834
ありがとうです。ご意見、ありがたく頂きます。
C直下に置いたことについてですが
起動時に1つだけどうしても読み込まないとだめなファイルがあって
そのファイルの場所を固定しなければならなくなり、C直下に置いてしまいました。
0837デフォルトの名無しさんNGNG
>>832
ソースをざっくり見たが、かなり無駄が多いな。
ちゃんと書けば今の量の10分の1以下に抑えられるだろう。
細かい所を上げるとほんと、きりが無いけど少しだけ。
関数を作ってないみたいだね。知らないのなら関数に手をだしてみたら。
あと、ファイル番号(#???ってやつ)はFreeFile()で取得した方がいいよ。
0838デフォルトの名無しさんNGNG
イッテ(・∀・)ヨシ!!
ttp://cgi.shutdown.server.ne.jp/SQ/minibbs.cgi
0839823NGNG
>>837
ありがとうございます。
関数ですね。難しそうですが、MSDN見ながらやってみます。
0840672NGNG
>>672です
>>804さん度々ありがとうございます。
アドバイスに従って、選択除去法を書いてみました。
最初、If関数でループの変数が、まだ残ってる数字の中にあるかという考えで書いたんですが、
それだと、前のと変わらない事に気付きまして、下の様に書き直しました。
以前のものよりさらに速くなりましたが、考え方はこんな感じでいいでしょうか?
>>804さん始めレスくださったみなさん大変勉強になりました。ありがとうございました。

Dim sData As String     '書込み用データ
Dim strBuff(6) As String   '数字格納データ
Dim sKumiawase(7) As String '残りの組合わせ文字列
Dim i As Integer       'ループ用カウンタ1
Dim j As Integer       'ループ用カウンタ2
Dim k As Integer       'ループ用カウンタ3
Dim l As Integer       'ループ用カウンタ4
Dim m As Integer       'ループ用カウンタ5
Dim n As Integer       'ループ用カウンタ6
Dim o As Integer       'ループ用カウンタ7
Dim p As Integer       'ループ用カウンタ8

For i = 1 To 8
 sKumiawase(0) = "01234567"
 strBuff(0) = Get_Number(i, sKumiawase(0), sKumiawase(1))
 For j = 1 To 7
  strBuff(1) = Get_Number(j, sKumiawase(1), sKumiawase(2))
  For k = 1 To 6
   strBuff(2) = Get_Number(k, sKumiawase(2), sKumiawase(3))
   For l = 1 To 5
    strBuff(3) = Get_Number(l, sKumiawase(3), sKumiawase(4))
    For m = 1 To 4
     strBuff(4) = Get_Number(m, sKumiawase(4), sKumiawase(5))
     For n = 1 To 3
      strBuff(5) = Get_Number(n, sKumiawase(5), sKumiawase(6))
      For o = 1 To 2
       strBuff(6) = Get_Number(o, sKumiawase(6), sKumiawase(7))
        sData = strBuff(0) & strBuff(1) & strBuff(2) & strBuff(3) & strBuff(4) & strBuff(5) & strBuff(6) & sKumiawase(7)
        Print #FileNumber, sData
      Next o
     Next n
    Next m
   Next l
  Next k
 Next j
Next i

Public Function Get_Number(i As Integer, sKumiawase1 As String, sKumiawase2 As String) As String
 Dim sLeft As String   '取り出した数字の左側の文字列
 Dim sRight As String  '取り出した数字の右側の文字列
 Dim iMojisuu As Integer '全体の文字数

 iMojisuu = Len(sKumiawase1)
 sLeft = Left(sKumiawase1, i - 1)
 sRight = Mid(sKumiawase1, i + 1, iMojisuu - i)
 sKumiawase2 = sLeft & sRight
 Get_Number = Mid(sKumiawase1, i, 1)

End Function
0841804NGNG
>>840
たったあれだけのヒントでよく完成しましたね。
関数化した点を除けば、ほとんど同じです。

細かいことを言えば、Midって長さを省略できるんですよ。
それと、バリアントが返るMidより、Mid$のほうがちょっと速いです。Left$も同様。

さらに、ループ変数もIntegerよりLongのほうが速いです。CPUもOSもVBも32bitですから。
0842672NGNG
>>672です
>>804=>>841さん。即レスありがとうございます。
お陰様で大変勉強になりました。
この選択除去の仕方は、次に作りたい物にも応用が利きそうです。
また、何かあった時はよろしくお願いします。
0843デフォルトの名無しさんNGNG
お前らEnum使ってますか?

最近知って便利さにビクーリしたよ
0844デフォルトの名無しさんNGNG
0という数字から、それに対応する定数の名称の文字列
(例えばvbDefaultトカ)を取得する事はできますか?
0845デフォルトの名無しさんNGNG
>>844
ムリ。
つーか何がしたいんだ一体
0846844NGNG
>845どうもありがとう。
特に意味は無いんです。できるのかなぁっていう興味だけで。
0847817NGNG
>>818
ありがとうございました。勉強してみます・・・。
0848Enum......NGNG
public Enum Hoge
aaa=1
bbb=2
End Enum

sub Test(p as Hoge)
end sub

---------------------------------------
1・Hoge.って打ってみ
2・dim a as Hoge:a= って打ってみ
3・call test(って打ってみ
0849デフォルトの名無しさんNGNG
今、vb2をやらされてます。
印刷機能を改良してます。
サンプルとして、vb5のソースを貰ったんですが、
API(OpenPrinter,GetPrinterなど)が、ことごとく使えません。

プリンタの設定(使うプリンタ、用紙サイズ、縦・横)を変更したいんですが、
ここらへん詳しい方いらっしゃいましたら教えてください。
0850デフォルトの名無しさんNGNG
>>848
thx 愛してる
0851ツリービューについてNGNG
ツリービューを使ってるのですが
ノードの2番目を選択させる方法がわからないので教えて下さい。

tre.Nodes(2).Selected = Trueで
うまくいくと思ったのですがうまくいきません。
マウスでノードをクリックしたような事をプログラムでやりたいです。
0852デフォルトの名無しさんNGNG
>>845
無理じゃないよ。ほれサンプル。最善のコードじゃないかもしれないけど。
「TypeLib Information」を参照設定してな

Private Sub Form_Load()
Dim tli As TypeLibInfo
'Set ti = TypeLibInfoFromRegistry("{FCFB3D2E-A0FA-1068-A738-08002B3371B5}", 6, 0, 9)
Set tli = TypeLibInfoFromFile("C:\WINNT\System32\MSVBVM60.DLL")
Call PrintConstantFromValue(tli, 0)
End Sub

Private Sub PrintConstantFromValue(ByVal tli As TypeLibInfo, ByVal Value As Long)
Dim ci As ConstantInfo
Dim mi As MemberInfo
For Each ci In tli.Constants
For Each mi In ci.Members
If mi.Value = Value Then
Debug.Print ci.Name, mi.Name
End If
Next mi
Next ci
End Sub
0853デフォルトの名無しさんNGNG
すみません、クリスタルレポートで作ったファイルって、
やっぱクリスタルレポートをインストールしている環境じゃないと
動かないのでしょうか。
もしそうなら、あんまり意味が無いような気がするけど。。。
0854デフォルトの名無しさんNGNG
>>853
だからセットアップexeを作る必要がある。
しかしそれが悲劇の始まり
0855853NGNG
>>854
うん?setup.exeって?クリスタルレポートで、ってことですか?
そんな機能あったっけ?
0856デフォルトの名無しさんNGNG
>>855
『クリスタルレポートで』か。
『クリスタルレポートを使った』と勘違いした。すまん
0857853NGNG
あ、クリスタルレポートを「使った」です。多分。
VBからPrintたたくソレです。
普通に作ったファイルなんですが。
0858デフォルトの名無しさんNGNG
>>857
VB6ならプログラム→vb6→vb6Tool→ディストリビューションウィザードで
setup.exeが作れるので、それに栗スタルレポートを入れればヨイ
0859853NGNG
ムホッ、ありがとうございます。
明日会社でやってみます。
0860デフォルトの名無しさんNGNG
昨日からVBやり始めてとりあえずソースエディタでも作ろうかと思ってる。
リッチテキストコンポーネントでエディタ部分作るんだけど予約語をリアルタイムで色つけたいと思うんだけどできるかな?
読み込み時にTextをリッチテキストフォーマットにすることは出来たんだが・・。
たとえば
switc と入れて最後にhをつけた瞬間にswitchが赤色に変わるとか

やっぱVBでは細かいことは出来ないのかな?
あとリッチテキストフォーマットの詳しい日本語説明のページ誰か知らない?
googleで検索しても全然ひっかからね〜〜・・・、MSDNのは英語だし・・
リッチテキスト自体もう死んでいくフォーマットだからかな
0861デフォルトの名無しさんNGNG
>>860
イベントでチェックすれ。
全部自前で描画してもよいよ。
0862デフォルトの名無しさんNGNG
>>861
横レスで申し訳ないのですが、テキストボックスで
2文字目から5文字目まで赤。とかできるんですか?
0863861NGNG
>>862
標準テキストボックスで普通のやり方したら無理。
API使いたくないなら我慢すれ。
(もう一個テキストボックス作る、とかいう方法もある。)
0864860NGNG
>>862
リッチテキストコンポーネントならできるよ
自分でリッチテキストフォーマットで書かなきゃならないようだけど
と言うかそれしか知らない
0865デフォルトの名無しさんNGNG
Ping(Pingじゃなくてもコマンドなら何でも)をうちたいのですがWin95/98とかだと普通に実行できるのですが
NT系だとうまくいきません。
98やNT系の両方で使えるようにしたいのですがこの場合どのように
すれば良いのでしょうか?
0866デフォルトの名無しさんNGNG
>>865
メインは1行なんだから、コード見せるべし!
たぶん環境変数COMSPECを使うといいよ。
0867デフォルトの名無しさんNGNG
>>865
前にShell関数でPing打つコード書いたがスレと番号がわからんかった。
>>866の回答+Environ関数を合わせて使う。
0868りNGNG
VBで「テトリス」みたいなのを作ってみたいのですが、ブロックを何で作ればいいかわかりません。
またブロックを回転させる方法、他のブロックとの衝突を判定するアルゴリズムのヒントをください。
0869りNGNG
テトリスはむずかしい 初心者はこんなのから作ってみれ、みたいなのがあれば教えてほしいです。
もちろんゲームに限りません。
0870デフォルトの名無しさんNGNG
>>868
>ブロックを何で作ればいいかわかりません。

Lineメソッドで■を描いてもいいし、ビットマップファイルをPictureBoxに
読み込んでおいて、PaintPictureメソッドで切り出して転送してもよい。
#ある程度、プログラムが動くようになったら、API関数のBitBltを使って、
#高速化すればいい。(←はじめたばかりなら#書きのところは気にするな)

>ブロックを回転させる方法
高校数学で習う回転の公式。
あるいは、単純にあるブロックの回転後の位置のパターンを全部用意してもOK。

>他のブロックとの衝突を判定するアルゴリズム
ブロックの管理は、例えば画面が横x縦を10x20とすると
そのサイズ + 左右上下2マス分だけ多い目の2次元配列を用意する。

で、2次元配列の中の数値の意味を、
・0なら何もない
・1なら移動中のブロック
・2なら固定されたブロック
・3なら画面の上下左右の壁
といった風に意味を決めておく。

ブロックを(上下左右に)移動させるときには、
各ブロックの移動後の位置の配列の中身をチェックして、
2や3に移動するブロックがあったら、移動不可とすればよい。
0871デフォルトの名無しさんNGNG
>>869

まるっきりの初心者なら、
カレンダー、電卓、(人対人の)オセロとか。
0872デフォルトの名無しさんNGNG
>>868
このスレにインベーダーの基本になるソースがあるから、
それを元に改良してみたら?
参考になると思うよ。

0873デフォルトの名無しさんNGNG
最初、えらい苦労してカレンダー作ったなぁ。。。
0874デフォルトの名無しさんNGNG
Dim varname() ←で宣言された配列があるのですが、
コード上のある時点で、この変数が「ReDimで再定義されたかされていないか」、
つまり要素数を与えられたかそうでないか判断するにはどういう手法があるでしょうか?

例えば
If UBound(varbane()) > 1 then
とか記述すると、「インデックスが有効範囲にありません」というエラーになってしまいます。
0875kuromoNGNG
テトリスよりカラムス(コラムス?)の方が簡単。
0876デフォルトの名無しさんNGNG
永らくお世話になりました。
http://www.shoeisha.com/mag/vbm/
0877デフォルトの名無しさんNGNG
>>876
>プログラムをカッコよくするイけてるTips
これが気になります
0878デフォルトの名無しさんNGNG
>プログラムをカッコよくするイけてるTips
文章になってんのか?
0879デフォルトの名無しさんNGNG
>>874
他にスマートなやり方があるのかもしれないけど、力ずくでやるなら

Function ubound_ex(aaa, Optional bbb) As Long
  On Error GoTo err_ubound_ex
  ubound_ex = UBound(aaa, IIf(IsMissing(bbb), 1, bbb))
  Exit Function
err_ubound_ex:
  ubound_ex = 0
End Function

こんな感じかな?
ubound_ex(varbane()) とすれば、
要素数が与えられていない時は0が返ってくると思う。
0880デフォルトの名無しさん NGNG
>>875
コラムスは消す時の判定が面倒ですよ。
ブロックの色も覚えておかなくてはいけない。
その点テトリスは連鎖も無いし、横の列だけ見てればいいし、
ブロックの種類というか色も考慮しなくてよい。
テトリスのほうが簡単だと思うなぁ。
昔DOSのテキストで作った感じでは、
初心者の定番のブロック崩しやインベーダーよりも
テトリスのほうが簡単だった。
0881874NGNG
>>879
な、なるほど……

場合によると
Redim vername(0)
とかが実行される可能性が有るのでエラーセクションの返り値を
-1にしましたが、ほぼそのままコード使わせていただきました。

どうもありがとうございます。
0882pingうちたいわけじゃないがEnvironってはじめて知ったもので・・・NGNG
>>102
これってコマンドボタンかなにかにくみこめばいいのか?
0883りNGNG
>>870
ありがとうございます。
ブロックの描画で学ぶことたくさんありそうです。
ひとつずつ勉強していきます。またいろいろ教えてください。
>>871
電卓は作りました。でもいきあたりばったりで、適当に変数をポコポコ作ってテストをくりかえしてたら
偶然うまいこと動いたって感じでした。かなり無駄の多いコードだと思います。カレンダーは本で見たかぎり、
日付の関数とかややこしくて逃げちゃいまちた。今度作ってみようと思います。
>>872
インベーダーにも挑戦してみたいと思ってます。ブロック崩しが大体できたので。
0884デフォルトの名無しさんNGNG
ある処理を、無限に繰り返したい。
でも、操作があれば止めたい。
こーゆー時、どのようにするものなんでしょうか?

今、キーボードのスクロールロックキーのLEDを光らせて遊んでるんですが
ずーっと点滅させ続けて、要らなくなったら止める、という操作が出来ず
悩んでいます。お助け下さい。
0885デフォルトの名無しさんNGNG
>>884

Private blnFlag as Boolean

'ボタン1の中
Do
DoEvents
'LEDを点滅させるコード
If blnFlag Then Exit Do
Loop
 
'ボタン2の中
blnFlag = True
0886デフォルトの名無しさんNGNG
相手のサーバの情報を取得するのにAPIを使えばいいというのは調べてわかったのですが
その中のHTTPRequestに関するものがありません。
一応APIビューアで検索したのですがそれらしいものは見つけられませんでした。
これってどこにあるんでしょうか?それとも検索の仕方が悪いのでしょうか?
0887デフォルトの名無しさんNGNG
>>886
http://www.google.com/search?num=100&hl=ja&q=internetopen+api+vb&lr=lang_ja
0888デフォルトの名無しさんNGNG
Accessのリンクテーブルを作りたくて、

Set catDB = New ADOX.Catalog
catDB.ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0;" _
& "Data Source=" & strDBLinkFrom

Set tblLink = New ADOX.Table
With tblLink
.Name = strLinkTblAs
Set .ParentCatalog = catDB
.Properties("Jet OLEDB:Create Link") = True
.Properties("Jet OLEDB:Link Datasource") = strDBLinkTo
.Properties("Jet OLEDB:Remote Table Name") = strLinkTbl
End With

catDB.Tables.Append tblLink

とすればいいのは判ったのですが、この時のリンク元に、
パスワードが設定されたMDBを使用したいのです。
どうしたらよいのでしょう?
0889884NGNG
>>885
ありがとうございす。
点滅させ続けたりが自由にできるようになりました。
つーかこんな単純なことでお世話になって申し訳ないです。
今後はもっと七転八倒してから質問に来ます。
失礼しました。
0890 ◆zjlzY5Ns NGNG
VBでperlのcryptと全く同じ結果を出す方法教えてマヂで。
API使ってもperlのと同じようには暗号化されないっぽいし・・・。
08910843NGNG
七転八倒しなくていいから、検索ぐらいすれば?

>>888
「VB MDB パスワード」で検索

>>890
「VB Crypt」で検索
0892デフォルトの名無しさんNGNG
>>891
検索してみましたが、パスワードつきMDBへのアクセス方しか見つけられませんでした。

catDB.ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0;" _
& "Data Source=" & strDBLinkFrom _
& ";Jet OLEDB:Database Password = " & strPassword & ";"

では、リンク先のMDBの設定ですよね?
テーブルのPropertiesにはPassword設定できませんし……。
それとも、何か根本的に勘違いしてるんでしょうか?
0893デフォルトの名無しさんNGNG
>>890
ちょっと調べてみた限り、
>暗号アルゴリズムは、OS に依存する。
>例えば、FreeBSD は MD5。Linux,Solaris は、DES が使われる。
みたいなことが書いてありますが。
つまり、ハッシュ方法は処理系依存。Perlでも同一性が保証されている
訳じゃないみたい?
アルゴリズムはDESかMD5のようなので、がんばればなんとかなりそうですが。
0894デフォルトの名無しさんNGNG
すいません、ひょっとしてshell関数でバッチファイルは起動させられないんですか?
今試しているのですが、起動してくれないのです。

VBからバッチファイルを叩きたい場合はどうしたらよいのでしょう。。。
0895デフォルトの名無しさんNGNG
ShellExecuteで普通に開けるはずだが
0896デフォルトの名無しさんNGNG
>>895
ありがとうございます、調べてみます。
0897デフォルトの名無しさんNGNG
>>896
手軽さとShell関数と似た使い勝手ということで、WinExec APIもいいかも。
推奨されない方法らしいけど問題ないでしょ。
ただ、ハンドルが帰ってこないので、BATファイルの終了待ちをしたい場合は
ShellExecute使う方がいいかな。

ところでさ、MSDNライブラリのShellExecuteの項目、変じゃない? 途中で
StartPageの解説に入れ替わってる…。
VC5付録のASCIIのAPIリファレンスも、VB用の定義記述がRegQueryValueEx
に入れ替わってたし、もしかして鬼門か?(^^;
0898ナコルルNGNG
VB6 SP5 で、WIN2000で、
コモンダイアログのプリンタ設定から設定した値が、
コントロールパネルのプリンタプロパティに反映されないんですけど。
そして反映されてないのにもう一度ダイアログ開くと、設定変更後の値がでます。

http://210.233.22.220/VBlabo/commonDLG/J042959.htm
調べた結果、NTでの上記の方法があったので試してみました。
すると、ダイアログから設定した値が、
ちゃぁんとプリンタプロパティにも反映されて、成功。と思えるんですが、
ここでもう一度ダイアログを開いてみると、設定変更前の値が表示されます。

今度はそのままマシンを再起動して次の各設定を見てみると、
プリンタプロパティの設定 → 設定変更後
アプリのダイアログ    → 設定変更前

と、二つの設定の値がなぜか異なります。
おそらく二つの設定の値がどこかに保持されているようで、
ひとつはレジストリだとはおもうんですが、
もうひとつはどこにあるのでしょうか?

このような現象が起こる具体的理由について誰か知らないでしょうか?
また、この現象に対して、有効な策というものはないのでしょうか?
0899デフォルトの名無しさんNGNG
そのURLの「状況」のところに
仕様です って思いっきり書いてあるんで
素直に 仕様なのか〜って納得するんじゃ駄目?
0900Delフサギコ ◆zE1iiRdQ NGNG
  ,,,,,,,,,,,,,,,,∧,,∧   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
〜′,,,,,,,,,,ミ,,゚Д゚彡 < メニューを表示せずにShortCutKey
  UU"""" U U    \の機能を使いたいのですが、どうすれば?

今は、FormのKeyPreviewをTrueにして
FormのKeyDownでCtrlとかShiftとかとキーの内容を
コードで処理してますですが、

もちっと、スマートな方法はないかしらと、思ってます。

VB6の普通のアプリです。よろしくスコ


0901デフォルトの名無しさんNGNG
>>900
コマンドボタン?だったら、
caption="キャプション" & "&P"みたいな感じでショートカットキーの
設定ができたと思われ
0902Delフサギコ ◆zE1iiRdQ NGNG
    ∧ ∧  ・・・・。
    ミ ゚Д゚彡
  〜ミ,,,,uuミ  ソリハ アクセラレータ では?
0903デフォルトの名無しさんNGNG
>>894
できるよ。
BATはスクリプトファイルで、実際に実行するのはコマンド・インタプリタ。
0904デフォルトの名無しさんNGNG
>>900
今の方法でいいとおもふ・・・。
0905デフォルトの名無しさんNGNG
テキストファイルをプロジェクトに埋め込んで
TextStreemに入れる方法ないですか?
外部に置きたくないけど
モジュールに書くと編集が大変なんで

環境はVB6 SP5です
0906デフォルトの名無しさんNGNG
Toolberコントロールに並べたボタンをチェックボックスの用に使いたいんですが、
初めからチェックされた状態(ヘコませた状態)にしておく方法が分かりません。
Toolbar.Buttons(index).Style = tbrCheck
で、チェックボックスの様な動きをするボタンに出来たんですが、
(クリックすればへこんで、もう一度押せば普通に戻る)
コレをコードでヘコませる方法が分かりません。

えーと、具体的には前回の状態を保存して、前回ヘコませたままで終了してれば、
次回起動時にもヘコんだままで起動させたいんです。
当然、前回の設定を保存する方法とかはわかりますんで、
知りたいのはコードでチェックされた状態(ヘコませた状態)にする方法です。
0907デフォルトの名無しさんNGNG
>>906
Toolbar.Buttons(index).Value = tbrUnPressed
Toolbar.Buttons(index).Value = tbrPressed
0908デフォルトの名無しさんNGNG
>>907
感謝。
出来ました。
レス数が900を超えています。1000を超えると表示できなくなるよ。