[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 03/28 13:59 / Filesize : 282 KB / Number-of Response : 982
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

VB.NET質問スレ (Part12)



1 名前:前スレ972 [2005/07/17(日) 20:33:58 ]
VB.NETの質問全般です

過去スレ
VB.NET質問スレ (Part11)
pc8.2ch.net/test/read.cgi/tech/1114217190/
VB.NET質問スレ (Part10)
pc8.2ch.net/test/read.cgi/tech/1109343613/
VB.NET質問スレ (Part9)
pc5.2ch.net/test/read.cgi/tech/1106577850/
VB.NET質問スレ (Part8)
pc5.2ch.net/test/read.cgi/tech/1102512868/
VB.NET質問スレ (Part7)
pc5.2ch.net/test/read.cgi/tech/1096683017/
VB.NET質問スレ (Part6)
pc5.2ch.net/test/read.cgi/tech/1088812165/
VB.NET質問スレ (Part5)
pc5.2ch.net/test/read.cgi/tech/1078134703/
VB.NET質問スレ (Part4)
pc2.2ch.net/test/read.cgi/tech/1065269043/
【老若】VB.net質問スレ【男女】 (Part3)
pc5.2ch.net/tech/kako/1056/10562/1056281084.html
【老若】VB.net質問スレ【男女】 (Part2)
pc2.2ch.net/tech/kako/1043/10436/1043629429.html
【老若】VB.net質問スレ【男女】
pc2.2ch.net/tech/kako/1025/10258/1025848458.html

237 名前:デフォルトの名無しさん mailto:sage [2005/08/16(火) 12:12:18 ]
Private mouseEnter As Boolean = False
Private Sub TextBox_Enter(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Enter
Me.SelectAll()
If Me.MouseButtons <> MouseButtons.None Then
mouseEnter = True
End If
End Sub
Private Sub TextBox_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseUp
MyBase.SelectAll()
mouseEnter = False
End Sub


238 名前:235-237 mailto:sage [2005/08/16(火) 12:13:56 ]
マウスクリックでのEnterかどうかを判断するようにしてみた。


239 名前:デフォルトの名無しさん mailto:sage [2005/08/16(火) 12:14:22 ]
>あと、いちいち絡むなよ。
馬鹿じゃないの。
「何も分かってないならだまってろ」
それを君に遠まわしに言ってるのに。。

240 名前:デフォルトの名無しさん mailto:sage [2005/08/16(火) 16:31:55 ]
なんだもっと煽り合いになるかと思ったのに過疎っちまいやがったつまらん

241 名前:最凶VB厨房 mailto:sage [2005/08/16(火) 17:02:40 ]
次はもうちょっとうまいこと釣ってくれよ。

242 名前:デフォルトの名無しさん mailto:sage [2005/08/17(水) 22:21:50 ]
>>all
色々ありがとうございます。

MouseDownで実装してみましたが、これもClickと
同様、テキストボックスのテキストの一部だけを選択
することができなくなるという問題がありました。

>>237 オリジナルのテキストボックスを作るのかな?
面倒だから、そこまでは勘弁して欲しいな・・・。
VB.NETの継承とかコントロールの作り方はまだよく
分からないので。



243 名前:デフォルトの名無しさん mailto:sage [2005/08/17(水) 22:34:07 ]
>>242
ユーザーコントロール作るの意外と簡単だよ。
前にも書いたけど、例えばここで解説されてる
www12.plala.or.jp/pc-labo/vb_net/14/main.htm

まあ実際には、ここの方法を応用してクラスライブラリ化した方が使いやすいと思う。

ユーザーコントロール作らないとしても、Tagにフラグ(mouseEnter)を食わせれば
ソースを必要以上に汚さずに>>237のやり方が使えると思う。

244 名前:デフォルトの名無しさん mailto:sage [2005/08/17(水) 23:00:54 ]
会社で作った.netのソリューションファイルを家に持ってきて開こうとしたら開けません。
家のは2002で会社のは2003なんですけど、全く互換性無いんですか?

245 名前:デフォルトの名無しさん mailto:sage [2005/08/17(水) 23:03:31 ]
2002のを2003のにするのはできるけど逆は無理。
一度2002のから2003のに変換したら逆変換は不可能。



246 名前:237 mailto:sage [2005/08/18(木) 00:20:27 ]
>242
243に同意。テキストボックスが複数あるなら(というかあるだろうし)
絶対にユーザーコントロール作ったほうがいいと思います。
おんなじロジックを全てのテキストボックスに組み込むなんて
ありえないっすよ。

あと、237のですが、mouseEnterがイベントハンドラの名前と
かぶってます。ちゃんと見直してからうpしろよ俺。
とりあえず、他の名前にしてください。


247 名前:デフォルトの名無しさん mailto:sage [2005/08/18(木) 17:13:45 ]
VB.NETというよりAxWebBrowserの質問になるんですけど、
AxWebBrowserで表示されているPageからzipファイル等がResponse.Redirectされた場合、
ダウンロードが開始されるんですけど、そのダウンロードされているファイルのURLは取れますか?


248 名前:デフォルトの名無しさん mailto:sage [2005/08/18(木) 18:12:00 ]
普通にBeforeNavigate2とかで取れるだろ

249 名前:247 mailto:sage [2005/08/18(木) 21:15:24 ]
実際に画面表示しないと取れないんですよ・・・。
zipとかのファイルであった場合、ダウンロードされるだけで画面表示されないので、
URLが変更されないみたい・・・。

250 名前:デフォルトの名無しさん mailto:sage [2005/08/18(木) 21:27:33 ]
変更?
AxSHDocVw.DWebBrowserEvents2_BeforeNavigate2EventにuRLプロパティが存在するが?

251 名前:247 mailto:sage [2005/08/18(木) 22:25:54 ]
確かに存在するのですが、ダウンロードされるファイルのURLがuRLプロパティには入っていないんです。
nRLプロパティには現在表示しているURLが入っています・・・。

252 名前:247 mailto:sage [2005/08/18(木) 22:26:51 ]
ひょっとして、Response.Redirectがだめなんですかね・・・?

253 名前:デフォルトの名無しさん mailto:sage [2005/08/19(金) 00:05:39 ]
リダイレクトが発生したときのリダイレクト先のURLはNavigateComplete2が一番早く取得できるみたいだね。
リダイレクトでダウンロードが発生するところを知らないから試せないが。
で、これがzipとかの場合AxSHDocVw.DWebBrowserEvents2_NavigateComplete2EventのuRLプロパティが正しく指さないってこと?
リダイレクトでhtml、直接zipはどっちも正しく指すんだけど。
//ん〜、FileDownloadが発生しない……

254 名前:デフォルトの名無しさん mailto:sage [2005/08/19(金) 06:54:28 ]
VB.NETかVB6でできるだけ多くの環境で動くネットワークプログラムを作りたいんすけど
その場合VB6を選択すべきですか?
.NET FrameworkってXPでもデフォルトでインストールされてないし。

255 名前:247 mailto:sage [2005/08/19(金) 09:21:50 ]
AxWebBrowser.Navigate2でzipファイルを指定するとNavigateComplete2.uRLで確かにzipファイルのURLが取得出来るんですが、
webForm1.aspxをNavigate2した後に、aspxのButton_ClickでzipファイルをResponse.Redirectしても
NavigateComplete2.uRLにはwebForm1.aspxのURLが入ってる状態です。
FileDownloadは発生しないですね・・・。




256 名前:デフォルトの名無しさん mailto:sage [2005/08/19(金) 09:24:12 ]
>>254
別にインストーラー作ればいいだけだし。
今更新規にVB6で作るって何考えてるのって思うし。

257 名前:デフォルトの名無しさん mailto:sage [2005/08/19(金) 09:37:01 ]
>>256
んだな。今更ocx入れるのマンドクセ。

258 名前:デフォルトの名無しさん mailto:sage [2005/08/19(金) 13:50:47 ]
別のPCのLAN上にIISがインストールされていれば
ローカルにIISがインストールされていなくても
ASPとかつくれますかね?

259 名前:デフォルトの名無しさん mailto:sage [2005/08/19(金) 14:27:04 ]
何作るかしらんが、作るだけなら作れるでしょ。
ASPってのが何指してるのか不明だけど。

260 名前:デフォルトの名無しさん [2005/08/21(日) 06:12:21 ]
>>69は天才だと思います。

261 名前:デフォルトの名無しさん mailto:sage [2005/08/21(日) 07:17:27 ]
>>254
本当に「できるだけ多くの環境で動く」事が優先されるなら、VB6もVB.NETも不可だろう。

VB6で作成した場合、Windows Vistaまでしか動作保障されない。
VB.NETで作成した場合、Windows95や98は切り捨てることになるな。

262 名前:デフォルトの名無しさん mailto:sage [2005/08/21(日) 07:46:31 ]
一応98は.NET動くぜ。

263 名前:デフォルトの名無しさん mailto:sage [2005/08/21(日) 21:58:21 ]

名前空間に漢字使ってますが問題ないですかね?
問題あったら教えてください。



264 名前:デフォルトの名無しさん mailto:sage [2005/08/21(日) 22:06:07 ]
少なくとも日本国内で開発する分には問題ないだろう。
実行には全く問題ない。

265 名前:デフォルトの名無しさん mailto:sage [2005/08/21(日) 22:06:07 ]
>>263
漢字を使うという頭が問題あり



266 名前:デフォルトの名無しさん [2005/08/21(日) 22:09:45 ]
現在Visibleプロパティがtrueになっているformを知りたいときって
どのようにしたらいいでしょうか?
If フォームA.Visible = True Then
 〜処理〜
ElseIf フォームB.Visible = True Then
 〜処理〜
 :
 :
みたいにif文やswitch文を書き連ねていくと、ソースが汚らしく思えるのですが。。。

267 名前:デフォルトの名無しさん mailto:sage [2005/08/21(日) 22:11:57 ]
ActiveForm/ActiveMdiChildとかそんなんじゃ駄目か?
ていうか何をどうやったらそんな判断が必要になるんだか。

268 名前:デフォルトの名無しさん [2005/08/21(日) 22:26:40 ]
ありがとうございます。
Form.ActiveFormで現在アクティブなフォームを表すFormが取得できるんですね。
if文やらswitch文よりすっきり書けそうですね。

269 名前:デフォルトの名無しさん mailto:sage [2005/08/21(日) 23:19:32 ]
>>264-265
サンクス。
楽に仕事がこなせるならそれで良いのです。

270 名前:デフォルトの名無しさん [2005/08/22(月) 12:57:22 ]
フォーム(Public Class WebForm1)にラベルがあります。
Public WithEvents Label1 As System.Web.UI.WebControls.Label

別モジュール(Module1)に関数(sub kan1)を作りました。その中で
Dim refForm1 As New プロジェクト名.WebForm1
というインスタンスを作りました。
で、refForm1.Label1.Text = "1"
とやると「オブジェクト参照がオブジェクトインスタンスに設定されていません」
と出ます。refForm1.Label1 ← ここでNothingになります。
なぜですか?

271 名前:デフォルトの名無しさん mailto:sage [2005/08/22(月) 13:36:13 ]
Newしてないからだろ

272 名前:デフォルトの名無しさん [2005/08/22(月) 13:38:44 ]
これじゃダメでしょうか?他のNewを思いつきません。
>Dim refForm1 As New プロジェクト名.WebForm1

273 名前:デフォルトの名無しさん mailto:sage [2005/08/22(月) 13:50:51 ]
いや、あのよ、何がNothingなのか考えろ?

274 名前:デフォルトの名無しさん mailto:sage [2005/08/22(月) 14:16:49 ]
横からでWebFormは知らんが、WebFormのインスタンスを生成しても、中のLabelのインスタンスが生成されてないんですよ。

Winformだと、コンストラクタからInitializeComponentが呼び出されてNewしてるんだけど、Webはしらん。しらべてみ。

275 名前:デフォルトの名無しさん mailto:sage [2005/08/22(月) 18:41:54 ]
テキストボックスでIMEが変換中かどうか取得する目的で
WndProcをオーバーライドしているのですが
スペースのみ入力してタブキーで次のテキストボックスに移ったときは
ENDCOMPOSITIONが来てくれません。

If m.Msg = &H10F Then 'WM_IME_COMPOSITION
bIMEmode = True
End If
If m.Msg = &H10E Then 'WM_IME_ENDCOMPOSITION
bIMEmode = False
End If

対策としてとりあえずKILLFOCUSでIMEモードのフラグを
OFFにしてみましたが、あまり美しくありません。
If m.Msg = &H8 Then 'WM_KILLFOCUS
bIMEmode = False
End If

スペースのみの場合はWM_IME_COMPOSITIONが飛んでこないように
するにはどうすればよいでしょうか?



276 名前:デフォルトの名無しさん mailto:sage [2005/08/23(火) 00:20:20 ]
え、飛んできてるんだけど>WM_IME_ENDCOMPOSITION
あとWM_IME_COMPOSITIONじゃなくてWM_IME_STARTCOMPOSITIONじゃないかなぁ

277 名前:デフォルトの名無しさん mailto:sage [2005/08/23(火) 08:20:20 ]
>>276
WM_IME_STARTCOMPOSITIONにしたら期待通りの動作をしてくれました。
ものすごく感謝です。

278 名前:デフォルトの名無しさん mailto:sage [2005/08/24(水) 10:31:47 ]
AccessのMDBからOelDbDataReaderを使用してデータを取得したいのですが、
OelDbDataReaderのループの中でもう1つOelDbDataReaderを実行すると
「この接続に関連付けられているDataReaderがすでに開いています。」とエラーになってしまいます。

OleDbConnectionを複数作成してコネクションを複数張れば出来ると思うのですが、
色々と不都合(トランザクションが作れないとか)がありそうなのでやりたくありません。

OelDbDataReaderをネストしない場合は正常にデータを取得できています。
下はエラーになるサンプルです。
何か根本的に間違えているのでしょうか?
よろしくお願いします。

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  Dim DbConn As OleDbConnection = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\test.mdb")
  DbConn.Open()
  Dim dbCmd1 As OleDbCommand = DbConn.CreateCommand
  dbCmd1.CommandText = "select * from TEST_TAB "
  Dim dbReader1 As OleDbDataReader = dbCmd1.ExecuteReader()
  While dbReader1.Read()
    Trace.WriteLine(dbReader1("TEST_NO").ToString)

    Dim dbCmd2 As OleDbCommand = DbConn.CreateCommand
    dbCmd2.CommandText = "select * from TEST_TAB "
    Dim dbReader2 As OleDbDataReader = dbCmd2.ExecuteReader()  '← *** ここでエラー発生 ***
    While dbReader2.Read()
      Trace.WriteLine(dbReader2("TEST_NO").ToString)
    End While
    dbReader2.Close()
  End While
  dbReader1.Close()
  DbConn.Close()
End Sub

279 名前:デフォルトの名無しさん mailto:sage [2005/08/24(水) 10:40:33 ]
MSDNにしっかり

> OleDbDataReader の使用中は、関連付けられた OleDbConnection は、
> OleDbDataReader によって使用されるためビジー状態になります。
> この間、 OleDbConnection に対して、閉じる以外の操作は実行できません。
> OleDbDataReader の Close メソッドを呼び出すまでこの状態が続きます。
> たとえば、 Close を呼び出すまでは、出力パラメータは取得できません。

と書かれている。

280 名前:>278 mailto:sage [2005/08/24(水) 11:08:49 ]
>>279
レスありがとうございます。
確かに解説の所に書いてありました・・・

皆様はDBからデータの取得中(OleDbDataReaderの使用中)に
他のデータを取得する場合どのように実現されているのでしょうか?

それともDataSetみたいに全データを取得してから次のデータを取得、
みたいな方法でやっているのでしょうか?
よろしくお願いします。

281 名前:デフォルトの名無しさん mailto:sage [2005/08/24(水) 11:35:16 ]
・順次、配列等に読み込む
・DataAdapter & DataSet を使う
・複数のコネクションを張る
・ストアドプロシージャを使う

282 名前:デフォルトの名無しさん mailto:sage [2005/08/24(水) 11:47:56 ]
>>281
ここの使用って改悪だよな。
バッチ的なテーブル処理に対して厳しいところがある。
ロックかけながらカーソル処理していくような処理で必ず詰まる。

283 名前:デフォルトの名無しさん mailto:sage [2005/08/24(水) 11:51:23 ]
ADO.NET 2.0では一つのConnectionから複数のDataReaderを同時に開くことができるようになるとどこかで聞いた。

284 名前:デフォルトの名無しさん mailto:sage [2005/08/24(水) 14:30:05 ]
接続ドライブのプロパティに表示されるようなドライブ固有の名前(例:Maxtor 6Y160P0)を取得する関数というのはあるのでしょうか?

285 名前:デフォルトの名無しさん mailto:sage [2005/08/24(水) 14:35:07 ]
WMI使えば?



286 名前:284 mailto:sage [2005/08/24(水) 14:43:56 ]
>>285
ありがとうございます。ググってみます。

287 名前:284 mailto:sage [2005/08/24(水) 15:02:11 ]
解決しました。ありがとうございました。

288 名前:278 mailto:sage [2005/08/24(水) 15:31:57 ]
>>281-283
レスありがとうございます。
今のところ直接目的にかなう解決方法がないのですね。
それが分かっただけでも良かったです。

ADO.NET 2.0では可能になるみたいですね。
www.microsoft.com/japan/msdn/vs05/adonet/ado2featurematrix.asp
の「SqlClient における SQL Server 2005 固有の機能」に書かれていました。

「SQL Server 2005 固有の機能」と言っているだけに
SQL Server 2005だけのような気がしますが・・・

ありがとうございました。


289 名前:284 mailto:sage [2005/08/24(水) 18:54:36 ]
すいません。再度質問させてください。
>>284にあるドライブ固有の名前の取得方法はわかったのですが
これとドライブレター名(例:C)とを関連付ける方法がわかりません。

Select * From Win32_DiskDrive
でドライブ固有の名前を

Select * From Win32_LogicalDisk
でドライブレター名を取得することはできたのですが・・・

290 名前:デフォルトの名無しさん mailto:sage [2005/08/24(水) 19:47:54 ]
まあ基本的に物理ドライブと論理ドライブはあんまり相関のないものだからねー。
Win32_LogicalDiskToPartition/Win32_DiskDriveToPartitionクラス辺りを使って頑張ればいけそうかな。

ん〜、Win32APIでやろうとしたらどうだろ。
DeviceIoControlを駆使することになるのかな。
ttp://66.102.7.104/search?q=cache:LVJxUPDlORYJ:vbnet.mvps.org/code/disk/+API+%22physical+disk%22+partition+volume&hl=ja
とてもお薦めできなさそうだ。

291 名前:284 mailto:sage [2005/08/24(水) 19:50:01 ]
>>290
ありがとうございました。これからぐぐります。

292 名前:デフォルトの名無しさん mailto:sage [2005/08/25(木) 00:38:17 ]
VBとVB.netの違いって何?

293 名前:デフォルトの名無しさん mailto:sage [2005/08/25(木) 04:40:59 ]
.net

294 名前:デフォルトの名無しさん [2005/08/25(木) 11:19:54 ]
DBMS_SQL.NUMBER_TABLEをパラメータに持つ
ストアドファンクションに
VBから配列を渡したいのですが
myOracleCommand.Parameters.Add()だと
InvalidCastExceptionが出ます。
どうやればよいのでしょうか?
私が書いたのはこんな感じです

myOracleConnection.Open()
myOracleCommand = New OracleCommand("sf_test", myOracleConnection)
myOracleCommand.CommandType = CommandType.StoredProcedure
Dim id(500) As Int32
〜中略〜
'コマンドパラメータ設定
myOracleCommand.Parameters.Add(id)←ここでInvalidCastException

295 名前:デフォルトの名無しさん mailto:sage [2005/08/25(木) 11:50:25 ]
ODP.NETだよね?
どちらかといえばデータベース板のOracleスレ向きな気もするけど。

PL/SQL表をバインドする場合、
OracleParameter.CollectionTypeを
OracleCollectionType.PLSQLAssociativeArrayにしないと駄目。

詳しくはOTNのODP.NET開発者ガイドを参照してください。




296 名前:デフォルトの名無しさん mailto:sage [2005/08/25(木) 13:02:05 ]
かなり初歩的な質問だと思うのですが・・・
ある処理中に処理中であることを示すウインドウを表示させたいのですが
どうにもうまくいきません。どのような方法が考えられるでしょうか?

297 名前:デフォルトの名無しさん mailto:sage [2005/08/25(木) 13:05:19 ]
抽象的すぎる質問だな。
どうやってみてどううまくいかないんだ?

298 名前:295 [2005/08/25(木) 13:19:55 ]
今調べてみたらODP.Net入れてなくて
DBアクセスしてたんだけどこれは
ODBCなのかな?



299 名前:デフォルトの名無しさん mailto:sage [2005/08/25(木) 13:22:21 ]
>>296
まずWindowsFormsなのかASP.NETなのか書いてくれ。

300 名前:294 [2005/08/25(木) 13:28:56 ]
>>295
調べたらOLE DB .NETでした・・・(しかも自分は294だしorz)
これでもやり方は変わらないのかしら?


301 名前:デフォルトの名無しさん mailto:sage [2005/08/25(木) 13:38:15 ]
>298
ちょいまて、295は俺だ。

てか、どのDataProvider使ってるかくらいは把握しといたほうが・・・。
ODP.NETじゃなく、.NET Framework Data Provider for Oracleだったとしたら
MSDNにPL/SQL表は使えないと書いてある。
使いたければMSDAORAと共に.NET Framework Data Provider for OLE DB使えってさ。


302 名前:デフォルトの名無しさん mailto:sage [2005/08/25(木) 13:40:58 ]
>>300
いや、Oracleが出してるやつじゃないと無理だと思う。

303 名前:294 [2005/08/25(木) 16:58:17 ]
>>295、302
返事遅れましたが、とりあえず何とかなりそうです。
感謝感謝。

304 名前:デフォルトの名無しさん [2005/08/25(木) 17:05:18 ]
vb.netでoracleのあるテーブルからデータを取得し、
そのデータを新規で作成したmdbに登録したいのですが。
そのようなことは可能でしょうか?
よろしくお願いいたします。

305 名前:デフォルトの名無しさん mailto:sage [2005/08/25(木) 17:20:04 ]
そのようなことは可能です。
よろしくお願いいたします。




306 名前:デフォルトの名無しさん [2005/08/25(木) 17:30:36 ]
超初心者です。

PUBLIC:COMPONENT

で始まるのってなんですか?



307 名前:デフォルトの名無しさん [2005/08/25(木) 17:42:45 ]
vb.netでプロセス間通信の質問です。
現在WIN XP上でvb.net(単品)の環境。
プロセス間通信を行いたいのですが、ファイルマッピング、パイプ、メールスロットなどなどことごとく失敗します。
今は名前付きパイプに絞っているのですが、パイプをクリエイトしてもハンドルが返ってこないのです。
下記のように単純化したプログラムでもNGです。

宣言部に
Public Structure SECURITY_ATTRIBUTES
Public nLength As Integer
Public lpSecurityDescriptor As Integer
Public bInheritHandle As Integer
End Structure

Declare Auto Function CreateNamedPipe Lib "kernel32.dll" Alias "CreateNamedPipeA" ( _
ByVal lpName As String, _
ByVal dwOpenMode As Integer, _
ByVal dwPipeMode As Integer, _
ByVal nMaxInstances As Integer, _
ByVal nOutBufferSize As Integer, _
ByVal nInBufferSize As Integer, _
ByVal nDefaultTimeOut As Integer, _
ByRef lpSecurityAttributes As SECURITY_ATTRIBUTES _
) As Integer

ボタンクリックで
hpipe = CreateNamedPipe("\\.\pipe\test", &H3, &H80000000, 255, 1024, 1024, 5000, Nothing)

これでhpipeに「-1」しか返ってきません。正常に行うにはどうすればいいのでしょうか?
よろしくお願いします。



308 名前:デフォルトの名無しさん mailto:sage [2005/08/25(木) 18:37:02 ]
>>307
Declare構文のAutoが解釈間違ってるよ。
Autoを指定する場合、プラットフォームに従ってStringをAnsiかUnicodeにマーシャリングする。
つまりNT系ならUnicodeで関数に渡される。
ところが実際に呼ぶ関数をAliasでCreateNamedPipeAとAnsi版を呼んじゃっている。
Ansi版は与えられたバイト列を当然Ansiとして解釈するから、&h00がすぐに見つかってしまって使用不能の文字列になってしまう。
解決法は
・Autoの代わりにAnsiを使う
・AliasをCreateNamedPipeにする(プラットフォームによって呼ばれる関数が実行時に切り替わる)
・Aliasを指定しない(プラットフォームによって呼ばれる関数が実行時に切り替わる)

それから、最後のパラメータSECURITY_ATTRIBUTEも。
ByRefは参照渡しなのは分かるよね。
Nothingは、構造体(Structure)の場合全てのフィールドが0のインスタンスを表す。
だからNothingと言いつつ実際にはnullではなく、結果として関数に新しく作られた構造体インスタンスのアドレスが渡ってしまってるわけ。
こういう場合、パラメータを
ByVal securityAttribute As System.IntPtr
と宣言して、IntPtr.Zeroを渡すのが良い。これはC/C++においてNULLポインタを渡すことと同義の行為。

あと、ハンドルの類はInteger(System.Int32)よりもSystem.IntPtrで宣言した方が良いよー。

309 名前:デフォルトの名無しさん [2005/08/26(金) 00:21:18 ]
>>308
レスサンクス
いやぁ、いろいろ見直すべきところが多くてお恥ずかしい。
破れかぶれでいろいろ変えてみて、元に戻し忘れてたところとかもあるし。
明日、早速試してみます。
ありがとうございます。


310 名前:デフォルトの名無しさん mailto:sage [2005/08/26(金) 03:18:22 ]
ソートツールを作りたいので可逆ソートがしたいです。
自分としてはBlockSortingがしたいです。
アルゴリズムは分かるのですが、実装方法がいまいちわかりません。

311 名前:デフォルトの名無しさん mailto:sage [2005/08/26(金) 03:39:47 ]
アルゴリズムが分かるならあとはそのまま実装するだけじゃないか

312 名前:310 mailto:sage [2005/08/26(金) 03:49:31 ]
実装がC++ではできますがVB.NETではなぜか出来ません。

313 名前:デフォルトの名無しさん mailto:sage [2005/08/26(金) 06:35:30 ]
VisualStudio.NET2003 を手に入れて、
VB.NET でちょっとした GUI ソフトを作りますた
それを別の PC で起動しようとしたら、何やらが見つからないといって動きません

要するに .NET Framework をインスコしないと動かないということだと思っておりまつ
おいらの PC ではないので、できればインスコしないで動けばありがたいのでつが、
何か方法はありまつか?
そもそも、VB.NET の GUI ソフトで .NET Framework を入れなくても動くものは作れまつか?

314 名前:デフォルトの名無しさん mailto:sage [2005/08/26(金) 07:32:07 ]
無理 入れろ

315 名前:デフォルトの名無しさん mailto:sage [2005/08/26(金) 11:19:29 ]
最近VBを使うようになって、クリック連打するソフトを作りたいと思ったのですが
マウスクリックをする命令が見つかりません。
どうやったらできますか?



316 名前:デフォルトの名無しさん mailto:sage [2005/08/26(金) 11:30:07 ]
画面上の好きなところをクリックしたいというのならWin32API。
SendInput関数かmouse_event関数。

317 名前:デフォルトの名無しさん mailto:sage [2005/08/26(金) 12:06:38 BE:113897873-##]
>>315
MouseDownとか

318 名前:デフォルトの名無しさん mailto:sage [2005/08/26(金) 14:45:19 ]
ありがとうございます。
思ったより大変そうだけどがんばってみます。

319 名前:デフォルトの名無しさん mailto:sage [2005/08/27(土) 17:11:57 ]
かなり、初歩的な質問だと思うのですが、
変数を宣言した時にクラス名の後ろの()
を記入しても消えてしまうのですが、なせなんでしょうか?
たとえば、、、
dim A as new frmLogon()

dim A as new frmLogon
になってしまうのですが。
何が原因なのでしょうか?


320 名前:デフォルトの名無しさん mailto:sage [2005/08/27(土) 17:45:29 ]
配列宣言したいのか?

321 名前:デフォルトの名無しさん mailto:sage [2005/08/27(土) 17:51:53 ]
>>320
いや別に配列宣言とは関係ないだろ。
引数無しのコンストラクタメソッド呼出を明示してるだけで。
C#とかだと必須だからなー。
//メソッドの括弧と配列の括弧が同じなのはややこしい……。

>>319
まあVBからのクセなのであまり気にしない。

322 名前:デフォルトの名無しさん mailto:sage [2005/08/27(土) 18:18:40 ]
>>321
ありがとうございます。
括弧はあってもなくても動きは変わらないと考えてよろしいのでしょうか?


323 名前:デフォルトの名無しさん mailto:sage [2005/08/27(土) 21:30:11 ]
Formデザイナに関する質問なんですが、TabPageコントロールを使っていると、
最初のタブページ以外のタブページ内のコントロールをデザインしていると
マウスポインタが各タブページのクライアント領域から外に出られなくなったり、
Formデザイナのコンテクストメニューが「コードの表示」以外の項目が
全部無効になったりする症状が出て困っています。

これって何か解決法ご存知ないでしょうか?
# どうもこの症状は環境依存というか、どの環境でも再現するわけではないみたいですね。

324 名前:デフォルトの名無しさん mailto:sage [2005/08/28(日) 01:39:08 BE:54237825-##]
RAM少ないんじゃない?

325 名前:さとみん。 [2005/08/28(日) 14:16:48 ]
VB6.0のツールバーのプロパティーにはHotTracking(?)があったのですが、VB.NETではなくなってし
まいま
したよね?ボタンの外観を変更できるプロパティーです。

ツリーノードのプロパティーには、HotTrackingが設けられています。
ツールバー上のアイコンにマウスポインタが配置された時、ボタンの外観を変更する方法はありませ
んか?

分かりにくい説明で申し訳ありませんが、お願いいたします。



326 名前:デフォルトの名無しさん mailto:sage [2005/08/28(日) 20:55:09 ]
test

327 名前:デフォルトの名無しさん mailto:sage [2005/08/28(日) 21:05:04 ]
>>325
いまいち質問が明示的じゃない気がする。
On Mouseでボタンの画像を変えたいってこと?
それはそういうコードを書くしかないよ。
ToolBar自体の機能としてはビルトインされてないから。

328 名前:デフォルトの名無しさん mailto:sage [2005/08/28(日) 21:14:21 ]
>>327
流せ。転載だから。
他でそれなりに詳しい解答貰ってるからして本人でもなかろうし。

329 名前:デフォルトの名無しさん [2005/08/29(月) 10:12:57 ]
vb.netの質問というよりvs.netの質問なのですが、
現在VS.NET2003のVB.NETを使っています。
.NET Frameworkのバージョンが1.0だったのですが、1.1の機能を使いたかったので
1.1のもろもろをダウンロードしてインストールしました。
しかし、VB.NETのヘルプにあるMicrosoft Development Environmentのバージョン情報にある
.NET Frameworkのバージョンが1.0のままで当然1.1の機能も使えません。
1.0があるせいかとも思い1.0をアンインストールしてみましたが、バージョンは変わらず
プログラムすることすらできなくなりました。
ただインストールするだけじゃだめなんでしょうか?
それとも何か根本的な勘違いをしているのでしょうか?

330 名前:デフォルトの名無しさん mailto:sage [2005/08/29(月) 10:18:19 ]
うん。
2003じゃ.NET 1.1の開発しかできない。2003を入れたときに自動的に.NET 1.1がインストールされる。
逆に2002では.NET 1.0の開発しかできない。2002を入れたときに自動的に.NET 1.0がインストールされる。

あなたの環境は矛盾している=何らかの勘違いが存在している。

331 名前:デフォルトの名無しさん mailto:sage [2005/08/29(月) 10:23:29 ]
>>330
今パッケージをよく調べたら2002と書いてましたorz
何を勘違いしていたのかずっと2003だとばかり思ってました。
ということは.NET 1.1は使えないのですね。
ありがとうございます。

332 名前:デフォルトの名無しさん mailto:sage [2005/08/30(火) 00:45:34 ]
すみません、VBで作ったGUI上からコマンドシェルの結果って取得できますか?
単純に
"ping 10.10.10.10"
ってStringを与えて、結果を取得する方法があればご教授ください。

333 名前:デフォルトの名無しさん mailto:sage [2005/08/30(火) 00:55:11 ]
System.Diagnostics.Processクラス

334 名前:デフォルトの名無しさん [2005/08/30(火) 11:36:00 ]

「管理ツール」の「データソース(ODBC)」のシステムデータソースに登録したデータソースに、ADO.NETを使って、システムデータソースの名前でアクセスしたいのですが、どうしたらいいのでしょうか?
ユーザーによってデータベースも異なります。
よって、データソースに名前でアクセスできるような方法をご存じないでしょうか?
よろしくご教授願います。


335 名前:デフォルトの名無しさん [2005/08/30(火) 16:28:53 ]
VB6のコード画面で [CTRL] + [↑] で一つ上のプロシージャに移動できた
はずなんですが、VB.NETで同様のことができるキー操作はないでしょうか?



336 名前:デフォルトの名無しさん [2005/08/30(火) 18:21:28 ]
すいません。学生でVisual Studio.net the Spokeのサイト
jp.thespoke.net/qotd/firstpage.aspxが落ちてるのですが
なぜでしょうか?

337 名前:デフォルトの名無しさん mailto:sage [2005/08/31(水) 12:54:22 ]
質問です。
OS:win xp
バージョン:VB.net
です。よろしくお願いします。

ピクチャーボックスを一つ用意して、もう一つをコントロール配列でその上にかぶせます。
そしてコントロール配列のほうのピクチャーをシャッターとし、タイマーで管理して開閉させます。
手動で用意したほうのピクチャーにはイメージリストから当たりとはずれの2種類をランダムで
選んできます。そしてキーダウンを有効にさせて、シャッターがあいていて、かつ、ピクチャーが当たり
の場合、tensuuを1足しこむ処理をしたいのですが、連打するとtensuuが何度も足しこまれてしまいます。
その・・・理由はわかっているのですが、どうすれば回避できるかがわかりません。
一回目に打鍵した直後にDo eventsで空ループを入れてみてもだめでした。
かといってスリープにすると他の処理まで止まってしまうと考えられるので試していません。

もう一つ考えたのは、打鍵した直後にフラグを立ててキーダウンを無効にし、そしてDo eventsで空ループを
適当にまわし、ループ終わった後にフラグを戻してキーダウンを有効に戻す。という方法ですが、
ちょっと今エラーが出てしまっています・・・。デバック中です。

でもなんかこう、ピンときません。よい解決方法をご教授いただけないでしょうか。
お願いします。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<282KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef