1 名前:デフォルトの名無しさん [04/10/02 11:10:17] VB.NETの質問全般です 過去スレ 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) pc2.2ch.net/test/read.cgi/tech/1056281084/ 【老若】VB.net質問スレ【男女】 (Part2) pc2.2ch.net/tech/kako/1043/10436/1043629429.html 【老若】VB.net質問スレ【男女】 pc2.2ch.net/tech/kako/1025/10258/1025848458.html
159 名前:デフォルトの名無しさん mailto:sage [04/10/17 10:23:28] 群を抜いてレベルの低いスレだな、ここは。
160 名前:デフォルトの名無しさん mailto:sage [04/10/17 12:05:04] >158 すまん。自己解決。犯人は秀丸だった。
161 名前:デフォルトの名無しさん mailto:sage [04/10/17 13:13:59] >>159 足を入れたとたんに低レベルですよ
162 名前:デフォルトの名無しさん [04/10/18 03:51:53] .netで、XML WEB サービスを作っています。 WebMethodで、引数を与えて、引数から計算をして戻り値を返すという関数を作ったのですが、 WebMethod名に引数を与えたURLを入力すると、 「'/WebServiceSoap' アプリケーションでサーバー エラーが発生しました。 要求形式が認識されません。 」 と出てきてしまいます。 WebMethod名だけを指定したURLにすると、テスト画面になってしまいます。 なぜ、直接、レスポンスがないのでしょうか?
163 名前:デフォルトの名無しさん mailto:sage [04/10/18 10:23:50] >>162 www.google.co.jp/search?q=cache:vv8aw_RQsE8J:www.atmarkit.co.jp/bbs/phpBB/viewtopic.php%3Ftopic%3D2278%26forum%3D7%262+%E8%A6%81%E6%B1%82%E5%BD%A2%E5%BC%8F%E3%81%8C%E8%AA%8D%E8%AD%98%E3%81%95%E3%82%8C%E3%81%BE%E3%81%9B%E3%82%93&hl=ja
164 名前:デフォルトの名無しさん mailto:sage [04/10/18 11:33:12] 漫才見てるようで面白いスレだ
165 名前:デフォルトの名無しさん [04/10/18 12:11:21] データーを作った後、帳票印刷にエクセルを使おうとして、下のように組んでみました。 印刷するところまでは上手く言ったのですが、閉じようとするとエクセル側に”変更を 保存してもいい?”って聞かれてしまいます。このメッセージを無視して、エクセルを 閉じてしまうにはどうしたらよいのでしょうか?
166 名前:デフォルトの名無しさん [04/10/18 12:12:01] Try Dim ExcelApp As Excel.Application Dim ExcelBook As Excel.Workbook Dim ExcelSheet As Excel.Worksheet ExcelApp = CreateObject("Excel.Application") ExcelBook = ExcelApp.Workbooks.Open("\\filesaver\data\printMitsumori.xls") ExcelSheet = ExcelBook.Worksheets(1) ExcelApp.Visible = True ExcelSheet.Cells(1, 1).Value = data1 ExcelSheet.Cells(2, 1).Value = "data2 ExcelSheet.PrintOut() ExcelApp.Quit()
167 名前:デフォルトの名無しさん [04/10/18 12:12:22] ExcelSheet = Nothing ExcelBook = Nothing ExcelApp = Nothing Catch ex As Exception MessageBox.Show("印刷処理に失敗しました、暫くしてから再度ボタンを押してください") ExcelApp.Quit() ExcelSheet = Nothing ExcelBook = Nothing ExcelApp = Nothing End Try
168 名前:デフォルトの名無しさん mailto:sage [04/10/18 13:37:03] Quitの前にDisplayAlertsをFalseにしる
169 名前:165 mailto:sage [04/10/18 13:48:03] できますた。ありがとうママン。
170 名前:デフォルトの名無しさん [04/10/18 14:50:41] フォームの表示に関しての質問です。 Sub Form_Load() Handles MyBase.Load '処理A(5分程度時間がかかる) End Sub この時、処理Aが終了するまで、フォームが表示されません。 処理Aの前にMybase.Showを実行すると、 ウィンド枠と、メニューは表示されるのですが、ボタンやテキストボックスが 白く表示されてしまいます。(処理Aが終了したら正しく表示される) 処理Aの間も正常に表示させるにはどうしたらいいのか教えてください。 お願いします。
171 名前:デフォルトの名無しさん [04/10/18 14:51:32] すみませぬ、スレ違いなんだけど、ココくらいしか聞けそうなところないようなんで。 VB.NET ではなく、C#を利用してasp書いてるんですが、 質問はどこでしたらいいんでしょう?それともそんなスレない?
172 名前:デフォルトの名無しさん mailto:sage [04/10/18 17:44:43] 処理中にウインドウを操作されても良いならば、 ループの中でApplication.DoEventsを呼べばいいかと。
173 名前:デフォルトの名無しさん mailto:sage [04/10/18 18:59:21] >>171 WebProg板 pc5.2ch.net/test/read.cgi/php/1040698263/l50
174 名前:170 [04/10/18 20:55:52] >>172 ありがとうございます。 ただ、処理A(Function のコール)は 外部から提供されている部分で、できれば手を加えたくありません。 他にもなにか方法があればお願いします。
175 名前:デフォルトの名無しさん mailto:sage [04/10/18 21:15:52] >>170 そもそもLoadイベントでなにか処理をするなんて根本から間違い。 別のタイミング(たとえばActivatedイベントなどで)行うべき。 さらに、そんな重い処理なら別スレッドで実行するようにするべき。 >>172 には悪いが、DoEventsなんて下策中の下策。 というか、>>170 の問題はDoEventsでは恐らく解決しないだろう。
176 名前:デフォルトの名無しさん mailto:sage [04/10/18 21:57:26] 質問です。 Dim Class1 As ClassName ... Class1 = New ClassName(0) ...しばらくClass1を使う Class1 = New ClassName(1) こんなことしてもVBさんは勝手にお掃除してくれるのでしょうか?
177 名前:デフォルトの名無しさん [04/10/18 22:06:37] しばらくしたら掃除してくれる
178 名前:176 mailto:sage [04/10/18 23:54:05] >>177 ありがとうございました。
179 名前:デフォルトの名無しさん mailto:sage [04/10/19 01:46:45] その、GCの仕組みってどうなってるのかなぁ
180 名前:デフォルトの名無しさん mailto:sage [04/10/19 01:50:42] ガベージをコレクトするのだよ。
181 名前:デフォルトの名無しさん mailto:sage [04/10/19 01:58:07] できる!VisualStudio.NETには 参照が解除された後に適当な時期に破棄される とある
182 名前:170 mailto:sage [04/10/19 10:29:39] >>175 ありがとうございました。 別スレッドで実行できる事を知りませんでした。 (Activated はFocusが移る度に実行されてしまうので向いていませんでした)
183 名前:デフォルトの名無しさん [04/10/19 15:00:46] スクロールバー付きのテキストボックスで キーボードからの入力は不可、表示はプログラムからのみ。 この時、テキストボックスの大きさより表示行が増えた時に、 一番下の行を常に表示したいのですが、 どういう設定をしたらいいのか教えてください。 現状は、行数が増えても同じ場所を表示してしまいます。 お願いします。
184 名前:デフォルトの名無しさん mailto:sage [04/10/19 16:01:33] >>183 テキストの入力位置をSelectメソッドで一番最後に指定して、 ScrollToCaretメソッドでその位置を表示させる 具体的にソースを書けば、以下のような感じ MyTextBox.Select(MyTextBox.Text.Length, 0) MyTextBox.ScrollToCaret()
185 名前:デフォルトの名無しさん mailto:sage [04/10/19 16:54:03] 久々に回答らしい回答を見た希ガス
186 名前:183 mailto:sage [04/10/19 17:07:42] >>184 ありがとうございます。 早速試してみます。
187 名前:デフォルトの名無しさん mailto:sage [04/10/19 18:11:22] っていうか久しぶりにVB.NETの問題を見たから答えただけだけどね
188 名前:デフォルトの名無しさん [04/10/19 20:13:04] 引数の数を可変にする方法があったら教えてください。 Function x(a As String,b As String,c As String,d As String) という感じのファンクションを呼び出す時に、 ある部分からは、aのみ設定して ある部分からは、a,b,c,を設定する という様な処理をしたいのですが。 よろしくお願いします。
189 名前:デフォルトの名無しさん mailto:sage [04/10/19 20:17:31] >>188 Overloads Optionalってキーワードもあるが、これは旧VBの負の遺産だから 使わないほうがいいと思う。
190 名前:デフォルトの名無しさん [04/10/19 23:56:34] すいません、ASP.NETを使えるレンタルサーバーを借りたのですが、使用時の心得に、 「共有サーバーとしてのデバッグ知識のない方はASPは絶対に利用しないでください! ローカルテストと共有サーバーは環境が全く違います」 という内容がありました。 これは、VisualSTudio.netのデバッガと、@pageやTrace.write()の相違のことを言っているのでしょうか?
191 名前:デフォルトの名無しさん [04/10/20 00:24:13] せめてそのレンタルサーバのアドレスぐらい書いてくれれば・・・
192 名前:デフォルトの名無しさん mailto:sage [04/10/20 00:31:05] >191 190の2行目そのまま、ぐぐるとヒットするようね。
193 名前:デフォルトの名無しさん [04/10/20 00:42:48] 190です。 すいません,上記内容はメールで送られてきたものです。 ASPの使用心得は、以上のみでした。 常識的には、VisualSTudio.netのデバッガと、@pageやTrace.write()の相違ということでいいのでしょうか?
194 名前:デフォルトの名無しさん mailto:sage [04/10/20 07:09:10] 要するに>190はASP使うなってことでしょ。 わかってないんだから。
195 名前:188 mailto:sage [04/10/20 08:32:22] >>189 ありがとうございます
196 名前:デフォルトの名無しさん [04/10/21 00:27:49] VB.netって、コントロール配列のやり方が、VB6.0と違いますよね。 VB6.0では、コピーアンドペーストでできたけど・・・ みなさんは、どうやってコントロール配列を作っていますか? 俺が見つけた方法は、どれもコードが汚くなる。 コードがきれいになる方法をご存知ないでしょうか
197 名前:デフォルトの名無しさん mailto:sage [04/10/21 00:55:08] >>196 質問は明確に。 どうやってもこうやっても、ないものは作りようがない。 つまりまったく同じ機能を享受したい、というわけにはいかない。 それはわかってるんでしょ? だったらなぜ、コントロール配列のこの機能と同じことができないか? という風に質問しないの?
198 名前:デフォルトの名無しさん mailto:sage [04/10/21 08:49:37] >>196 コントロール配列を使うことがあまり無いかな たまに使うときはコンストラクタで MyButton(1) = MyButton1 MyButton(2) = MyButton2 MyButton(3) = MyButton3 ってしておく あとは実行時に複数登録する場合もあり Dim i As Integer For i = 1 To 10 Dim item As MenuItem = New MenuItem("MenuText") AddHandler item.Click, AddressOf MyMenuItem_Click MyMenu.MenuItems.Add(item) Next
199 名前:K mailto:age [04/10/21 16:24:03] メールソフトを作ろうと思っているのですが、 POPサーバーにログインするにはどうしたらいいかわかりません。 どなたか、教えてくれませんか〜?
200 名前:デフォルトの名無しさん [04/10/21 16:47:10] >>199 C#でちょこっと作ってみた。 www.asahi-net.or.jp/~ec6k-mtmr/SharpMail.zip もし読んでなければ、RFCを読むのがおすすめ。 www.goto.info.kanagawa-u.ac.jp/~horiyuki/rfc/rfc1939j.txt
201 名前:デフォルトの名無しさん [04/10/21 16:48:18] www.goto.info.kanagawa-u.ac.jp/~horiyuki/rfc/rfc1939j.txt 単純なプロトコルだけあって短いな
202 名前:ぬるぽ大明神 mailto:sage [04/10/21 16:52:37] ここは初心者にやたらと優しいスレですね。
203 名前:K mailto:age [04/10/21 16:57:32] >>200 ,201 POPサーバーにログインだけするにはどうすればいいですか?
204 名前:デフォルトの名無しさん [04/10/21 17:11:43] >>203 USERとPASSを送って待機(かQUITで終了)。 なんの意味があるかわからんが(POP before SMTPのためか?)。
205 名前:K mailto:age [04/10/21 17:18:18] >>204 >なんの意味があるかわからんが(POP before SMTPのためか?)。 その通りです。 ソース作ってもらえませんか?
206 名前:デフォルトの名無しさん mailto:sage [04/10/21 17:21:26] dobon.net/cgi-bin/vbbbs/cbbs.cgi?mode=al2&namber=6878&rev=&no=0 ( ゚Д゚)ウボォアー
207 名前:K mailto:age [04/10/21 17:27:09] >>206 ソースがほしかったんですけど、なかなか聞き出せなくて… ごめんなさい。
208 名前:デフォルトの名無しさん mailto:sage [04/10/21 17:34:02] 死刑確定ですか?
209 名前:K mailto:age [04/10/21 17:46:47] で、POPサーバーにログインするにはどうしたらいいのですか?
210 名前:デフォルトの名無しさん [04/10/21 18:09:17] ググりゃ出てくるがな
211 名前:デフォルトの名無しさん mailto:sage [04/10/21 18:28:49] VB.NETで縁取りした文字列の形にコントロールを切り抜きたいと思ってます。 GraphicPathに文字列を追加して、DrawPathで太めの縁を描画すると、 元のパスから外側に少しはみ出しますよね? このはみ出た分も収まるようにコントロールのRegionを設定したいのですが、 何か方法ありますでしょうか?
212 名前:デフォルトの名無しさん mailto:sage [04/10/21 23:47:49] >>211 やったことないんで間違ってたらゴメン。 これ使ってパスを「膨張」させといて、そのパスからリージョンを 作ればいいんじゃないかな。 www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpref/html/frlrfSystemDrawingDrawing2DGraphicsPathClassWidenTopic.asp
213 名前:K(偽者) mailto:sage [04/10/22 05:17:14] で、ログインのソースはまだですか?
214 名前:デフォルトの名無しさん mailto:sage [04/10/22 10:05:14] >>213 今作っています。2年程待って下さい。
215 名前:デフォルトの名無しさん mailto:sage [04/10/22 10:26:29] >213 2年もまてませんよね? ソースあります。1行100円でどうですか? 全体で30万行ほどあります。
216 名前:211 mailto:sage [04/10/22 10:37:29] >>212 ほぼ思った通りのことができました。 ありがとうでした。
217 名前:デフォルトの名無しさん mailto:sage [04/10/22 10:52:44] チェックボックス状態の配列参照の仕方について教えてください。 チェックボックスが複数あり、そのcheckd状態を check(1),check(2)・・・といった感じの配列として参照したいのですが、 方法が分かりません。 お金は払えませんが、よろしくお願いします。
218 名前:デフォルトの名無しさん mailto:sage [04/10/22 12:29:28] >217 ちょっとは過去ログ嫁
219 名前:デフォルトの名無しさん mailto:sage [04/10/22 12:42:48] >>196 =217?
220 名前:K(偽者2) mailto:sage [04/10/22 12:52:07] >>215 分かりました、3000万円ですね。 バイトで貯めますので、3年待ってください。
221 名前:217 [04/10/22 18:00:14] >>218 検索のヒントとなるキーワードだけでもお願いします。 ちなみに、フォームのデザイン上CheckListBoxでは無く、 CheckBoxでの配列参照を考えています。 お願いします。
222 名前:デフォルトの名無しさん [04/10/22 18:27:01] 現在ログオンしているユーザーを取得するのはどうすんの? GetUserNameだとユーザー切り替えに対応してないから無理なんだけど.... 教えてエロイ人
223 名前:デフォルトの名無しさん mailto:sage [04/10/22 18:30:07] デジャヴを感じる・・・
224 名前:デフォルトの名無しさん mailto:sage [04/10/22 23:16:56] VB.NET のプロジェクトに、VB(というかWindowsプログラミング)経験無しで いきなりつっこまれました(いままで Unix で C か Java) VB.net で業務画面アプリを作っていて、サーバにXMLで電文を 送っているんだけど、xsd というファイルは XML スキーマですよね。 xsx と resx っていうのがセットであるんだけど、この二つはなに? たとえばソースコードを VSS なり CVS で管理するとき、 xsd は必要だけど、xsx や resx もあった方がいいの?
225 名前:デフォルトの名無しさん [04/10/23 01:25:34] 通信処理で、非同期スレッド内で受信データを読込み、読込みが完了したら、イベントを発生させ フォームでそのイベントを受け取ろうとしています。 で、フォームでイベントを受けた時に、TextBoxのプロパティをウォッチウィンドウで参照しようと するとプロパティの欄が全て"Error:Cannot obtain value"となります。 いろいろ試したのですが、なぜこのようなエラーが発生するか見当もつきません。 どんな些細なことでもかまいませんので、皆様の意見をお聞かせください。 簡単なソースを付けておきます。(フォーム上にテキストボックスとボタンを貼り付けてください。)
226 名前:225 [04/10/23 01:26:00] Public Class Form1 Inherits System.Windows.Forms.Form WithEvents test_cls As New test Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click test_cls.Start()'受信スレッド実行 End Sub Private Sub test_cls_test_Event(ByVal count As Integer) Handles test_cls.test_Event'受信完了したイベント TextBox1.Text = count'ここで、TextBox1をウォッチウィンドウでデバックしようとすると、"Error:Cannot obtain value"となる End Sub End Class Class test'簡単な通信クラスのつもり Public Event test_Event(ByVal count As Integer) Private m_Thread As Threading.Thread Public Sub Start()'スレッド開始ポイント m_Thread = New Threading.Thread(AddressOf test_Thread) m_Thread.Start() End Sub Sub test_Thread()'受信データチェックスレッド Dim Count As Integer While (1) RaiseEvent test_Event(Count)'受信データが有りとみなして、イベントを発生させる Count += 1 System.Threading.Thread.Sleep(10000) End While End Sub End Class
227 名前:デフォルトの名無しさん mailto:sage [04/10/23 01:35:36] >>225 たぶんDOBON.NETさんのメルマガの25号に書いてあるようにすればいいんじゃないかな。
228 名前:225 [04/10/23 01:58:55] >>227 ありがとうございます。まさに、行いたい事がそのまま書いてありました。 以前BeginInvokeも試したのですが、 その時は、サンプルもほとんどなかったのでどうやら使い方が間違っていたみたいです。 サンプルも豊富に載っているみたいなので、ちょっと勉強してきます。
229 名前:デフォルトの名無しさん [04/10/23 12:06:14] >>222 ここにその方法がある forums.belution.com/ja/vc/000/165/29.shtml でもVC用なので俺はわからん 誰かVB用に書き直してくれ
230 名前:デフォルトの名無しさん [04/10/23 17:01:05] 仮に王とジンの強さが同じくらいとする。 でも、ネテロや他のハンターが王を倒したら、ジンの強さって何?ってことになる。 しかも、その後の展開で、旅団との強さのバランスが取りにくい。 よって、 ジン>>>王=クロロ>ネテロ>>>ネフェルピトー、シャウアプフ、モントゥトゥユピー>カイト>>>ゴン、キルアほか討伐メンバー これくらいが妥当。
231 名前:デフォルトの名無しさん [04/10/23 23:22:16] VB.NETでADO.NETを扱う質問です。 ACCESSデータベースに接続して編集をする場合 OleDbParameterを CurrentパラメーターとOriginalパラメーターと2つ用意することは わかったのですが、 パラメータ自動生成を使った場合 OleDbUpdateCommandのパラメーターに NAMEカラムなら NAMEというCurrentパラメーターと Original_NAMEというOriginalパラメーターと Original_NAME1というOriginalパラメーターができています。 3つ目のOriginal_NAME1は何の目的で生成されているのですか?
232 名前:デフォルトの名無しさん mailto:sage [04/10/23 23:26:07] >>230 すざましい誤爆だな。
233 名前:デフォルトの名無しさん mailto:sage [04/10/24 15:27:55] すいません、初心者の質問をさせてください(初心者質問スレはないようなので)。 3個の数字をタイムラグをつけて次々と表示させたいのですが、 number1.Text = number1 (空ループorTimer プロパティ) number2.Text = number2 (空ループorTimer プロパティ) number3.Text = number3 としても、3つの数字・ラグ・数字・ラグ・数字のようにはならず、ラグのあとに 3つの数字がまとめて出てきてしまいます。 当方通常のBASICは使ったことがあるので同じノリでこのようにやってみた のですが、なぜそうなってしまうのか全く分かりません。 どうすればいいのか、何故そうなるのかを教えていただければ幸いです。
234 名前:デフォルトの名無しさん mailto:sage [04/10/24 17:47:19] number1.Text = number1 (空ループorTimer プロパティ) number2.Text = number2 (空ループorTimer プロパティ) number3.Text = number3 (画面の描画) となってるから。
235 名前:224 mailto:sage [04/10/24 21:19:59] >>224 すみません、レスをいただければうれしいです。
236 名前:デフォルトの名無しさん [04/10/25 19:12:56] Dim ApplicationFolder As String = "\\192.168.100.1\ftp\" Dim fileName As String = nekomimi Dim codeNo As String = 67890 Dim WriteFileStream As FileStream = New FileStream(ApplicationFolder & a & ".mit", FileMode.Create, FileAccess.Write) Dim TextStreamWriter As StreamWriter = New StreamWriter(WriteFileStream, Encoding.GetEncoding("Shift_JIS")) TextStreamWriter.WriteLine(b) TextStreamWriter.Close()
237 名前:デフォルトの名無しさん [04/10/25 19:13:21] 上記のようなプログラムで、ファイル名”nekomimi.mit”を作成してから、ネットワークで共有されたディスク内に格納 しておき、メールで【\\192.168.100.1\ftp\nekomimi.mitをクリックしてください。】というリンクつきのアナウンスを 流し、アドレスクリック一発で.mitに関連付けておいた.exeを起動、codeNoを読み取ってから変数aに代入したいのですが 初心者用の書籍には、こういう使い方が出ていません。 どなたか、こういう使い方をされた事のある方、ヒントをいただけないでしょうか?
238 名前:233 mailto:sage [04/10/25 19:50:03] >>234 それは何故なんでしょう? 何かいい手はありますでしょうか?
239 名前:デフォルトの名無しさん mailto:sage [04/10/25 22:20:18] >>238 明らかに > (空ループorTimer プロパティ) のところが悪さしてるのだから、その部分のソースをupするべし。
240 名前:デフォルトの名無しさん mailto:sage [04/10/25 22:22:50] >>238 間に application.doeventsだったかな? それいれたらいけるんじゃないかな
241 名前:デフォルトの名無しさん mailto:sage [04/10/26 01:08:39] DataGridのHeaderのHeightはどうやったら調整できますか?
242 名前:233 mailto:sage [04/10/26 01:33:11] >>240 それを入れたらうまく行きました。ありがとうございます。 ただ、それってラグの間に操作を受け付けるようにする処理ですよね? 全然関係ないように思えるんですが、なぜそれでうまく行くんでしょう…?
243 名前:デフォルトの名無しさん [04/10/26 02:59:53] WebClient.DownloadFileを使用して 1本のファイルをダウンロードするプログラムを作っています。 ダウンロード中にプログレスバーで進捗を表示したいのですが、 ファイルの何%をダウンロードしたかを取得してリアルタイムに表示する方法ってあるのでしょうか?
244 名前:デフォルトの名無しさん mailto:sage [04/10/26 03:28:00] >>243 WebClient.DownloadFileじゃ無理。 WebRequest, WebResponseを使ったストリーム受信を行う必要がある。
245 名前:243 [04/10/26 03:43:46] >>244 ありがとうございます。さっそく調べてみます。
246 名前:でき [04/10/26 08:54:03] すいませんが、どなたか、VB.netにてwin2000、winXPの端末がコンピュータロック中か取得する方法をご存知でしょうか?
247 名前:デフォルトの名無しさん mailto:age [04/10/27 21:24:01] NULL文字で終わるANSI文字列を受け取る関数を、CのDLLで実装しました。 void __stdcall Func(const char *s); VB.NETから利用するために、以下のように定義したところ、 Declare Sub Func Lib "testdll" (ByVal s As String) ' (1) 文字列変数に"あいうえ"という文字列を格納し、この変数をFunc()に渡すと、 関数呼出し後、文字列変数の中身が"あい"に変わってしまいました。 MSDNを読んだところ、そもそも(1)の宣言だと文字列がBSTRに解釈されてしまうため、 Declare Sub Func Lib "testdll" ( _ <MarshalAs(UnmanagedType.LPStr)> ByVal s As String) ' (2) と宣言すべきである、という事がわかり、試しに(2)のとおり宣言してみたところ、 関数呼出し後も文字列変数の中身は変わりませんでした。 ただ、(1)の形式で変数の中身が変わってしまう理由が分かりません。 なぜ(1)の形式だと、このような現象が発生するのでしょうか?
248 名前:デフォルトの名無しさん mailto:sage [04/10/27 22:18:29] >>247 症状は全然ちがうけど、同じように.NET側で確保した領域をポインタ渡しする処理で 原因不明のトラブルで悩んだことがあったけど、(.NET FrameworkはVer1.1) このあいだでたSP1のFrameworkをインストールしたら解消した。 もしまだSP1にしてなければ試してみては?
249 名前:デフォルトの名無しさん mailto:247 [04/10/27 22:59:05] >>248 ソレダッ!と思い、早速SP1を当ててみました。 しかし、現象変わらずでした。
250 名前:240じゃないけど [04/10/28 01:22:38] >>242 >ただ、それってラグの間に操作を受け付けるようにする処理ですよね? いやいや、メッセージ・ループからメッセージを取ってくるんでしょ?キューに たまったメッセージが処理できないで待ってるんだから。 この説明でわかりますか? Windowを扱うシステムってメッセージ駆動に なっているのだという基礎が出来てないと理解できないと思うが。
251 名前:デフォルトの名無しさん [04/10/29 01:47:20] VB.netでMIDI音源に、音を出させるにはどうすればいいですか? MIDIファイルの再生でなく、指定した音、又は音列を再生させたいんですけれど。
252 名前:デフォルトの名無しさん mailto:sage [04/10/30 01:01:45] >>251 wisdom.sakura.ne.jp/system/winapi/media/mm11.html ここ見ればわかるはず。現に俺はここ見ただけでその手のコードが書けた。 見てもわからなかったら諦めるよろし。 ま、普通このぐらいのことGoogleで検索して調べるわけで、 そんな手間すら惜しむお方には無理に5万両。
253 名前:251 mailto:sage [04/10/30 01:23:22] すまん。 "VB.net" MIDI でしか検索してなかったんで、Cのコードを参考にするって考えが浮かばなかった。 が、今一よくわからん……。 とりあえず、DirectX SDK落としてきたよ。
254 名前:251 [04/10/31 01:25:31] ダメだorz。やっぱりわからん。 環境は 言語:VB.net IDE:SharpDevelop SDK:DirectX 9.0 SDK Update (October 2004) で、>>251 に書いた様なコトをしたいんですけど……。
255 名前:251 mailto:sage [04/10/31 01:51:11] gpwiki.org/index.php/VBNET:DirectSound まずは↑ここを参照しつつ、WAVを再生させる事には成功したんで、 なんとか頑張ってみます。
256 名前:デフォルトの名無しさん mailto:sage [04/10/31 01:59:14] Managed DirectXがDirectMusicをサポートしない以上WinAPIの方が手っ取り早そうだけどなぁ……。
257 名前:フナ太郎 mailto:sage [04/10/31 03:07:02] マネージド、マネージド うっせーんだよ
258 名前:252 mailto:sage [04/10/31 11:26:26] >>251 貶すだけじゃ後味悪いんで一言。 どうしてもDirectX使わなきゃダメなの? >>256 も書いてるけどWinAPI使えばびっくりするぐらい簡単だよ。 いろいろ調べながらでも1,2時間もあればとりあえず音を出すことは出来ると思う。 とりあえず使う関数はmidiOutOpen,midiOutShortMsg,midiOutReset,midiOutClose これだけだったはず。(実際に音を出したり止めたりするときに使うのはmidiOutShortMsgだけ) APIの宣言の仕方がわからないなら、APIの関数名にVBってキーワード付けて 検索すればVB6での宣言が出てくるはずだから、それを少し改変するだけでいい。 定数の値も同じ要領で調べられるはず。 気をつける点は、 (1)VB6の LongはVB.NETではIntegerになっている。(2)引数の渡し方のデフォルト、 つまり明示的に書かなかった場合VB6ではByRefなのに対しVB.NETではByVal (3)引数のうちデバイスハンドルは、VB6ではLongになっているがVB.NETでは IntegerではなくIntPtrにしたほうがいいかも。 こんなところかな。
259 名前:デフォルトの名無しさん mailto:sage [04/11/01 00:32:06] .NETでWinAPIを使うのは良くない、みたいに聞いていたので、DirectXを使おうとしてたのですが。 で、色々と弄ってみましたが、エラーは起きないものの、 再生されない……。参考にしたVBのサンプル(tokyo.cool.ne.jp/kanain/APIHTM/midiOut.html )付属のexeでは出てるのにOrz。 こんな感じなんですが↓