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

VB.NET質問スレ (Part24)

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2007/12/13(木) 10:03:48
前スレ

VB.NET質問スレ
http://pc11.2ch.net/test/read.cgi/tech/1189038267/
(Partがありませんが、23です。)
テンプレは2〜5くらいまでの間にある予定
04124072008/01/09(水) 23:48:12
理想としては、フォルダの画像一周したら開放。
そして、また位置から画像表示みたいな風にしようかなって思ってます。
0413デフォルトの名無しさん2008/01/09(水) 23:56:37
>>411
ImageオブジェクトのDispose()ちゃんとやってる?
0414デフォルトの名無しさん2008/01/10(木) 00:01:52
>>407
なんかトンチンカンな回答が多いが、問題の本質は画像を配列に格納していること。

冷静に考えてみ?
そんな無駄なことをする必要がどこにある。
04154072008/01/10(木) 00:18:26
ありがとうございます。
>>413
ためしにやってみたのですが、やはりうまくいきませんでした。
私の認識がおかしかったのかもしれませんが・・・
>>414
確かにわざわざ入れる必要がないことに気がつきました。

もう一度、考え直してプログラムを作ってみようと思います
0416デフォルトの名無しさん2008/01/10(木) 08:47:02
>>389
サーセンwww
友達からもらいましたwww
0417デフォルトの名無しさん2008/01/10(木) 09:09:13
おうおう、順番がまちがってらぁw
まず先輩・友達をあたってからここへ来いw
0418デフォルトの名無しさん2008/01/10(木) 10:47:47
友達にあたるなよ?
0419デフォルトの名無しさん2008/01/10(木) 19:59:53
Try
〜
Catch ex As Exception

End Try
0420デフォルトの名無しさん2008/01/10(木) 20:04:26
すみません。

Try
 〜
Catch ex As Exception
 〜
End Try

これで出た例外 ex をもっと細かく分離して受け取る場合は

Try
 〜
Catch ex As Exception
 〜
Catch ex As HogeException
 〜
Catch ex As HogeHogeException
 〜
End Try

などとするということで良いでしょうか?このCatchの順番を間違えると
受けたい例外の種類として確実に受けられないということはあるでしょうか?
(たとえば上の順番だと、全部最初のExceptionで受けてしまうことになるの
でしょうか?
0421デフォルトの名無しさん2008/01/10(木) 20:13:24
Catchするな
つーかthrowしてみりゃいいだけの話
0422デフォルトの名無しさん2008/01/10(木) 20:26:29
Catch だけでダメなら When も使えば良いじゃない。
0423デフォルトの名無しさん2008/01/10(木) 20:38:55
>>421-422
わかりました。
When ステートメントとかもあったのですね、勉強になりました。
0424デフォルトの名無しさん2008/01/11(金) 00:19:04
質問です。

DataGridViewでセル番地を指定して処理したいのですが
(x,y)のように指定するのはどのメソッドを使えばいいのでしょうか?
0425デフォルトの名無しさん2008/01/11(金) 09:35:59
>>424
DataGridView(columnIndex,rowIndex)
とか
DataGridView(columnName,rowIndex)
columnIndexはイマイチ怪しいときがあるので、後者のカラム名指定の方が確実かなぁ
0426デフォルトの名無しさん2008/01/11(金) 12:10:42
なんじゃそりゃ
0427デフォルトの名無しさん2008/01/11(金) 13:16:09
ColumnNameで指定しておけば、あとあと列の追加とかあった時にいちいち対応しなくてよいでしょ
04284242008/01/11(金) 23:04:42
>425さん
ありがとうございました。
0429デフォルトの名無しさん2008/01/12(土) 01:51:26
てす
0430デフォルトの名無しさん2008/01/12(土) 02:03:19
てす
0431デフォルトの名無しさん2008/01/12(土) 02:08:19
Private Sub Form3_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) _
Handles Me.KeyDown

Dim ctrl As Control = Me.SplitContainer3.ActiveControl
If Not TypeOf ctrl Is TextBox Then Exit Sub
If e.Control Then
  Select Case e.KeyCode
   Case Keys.A
    DirectCast(ctrl, TextBox).SelectAll()
   Case Keys.C
    DirectCast(ctrl, TextBox).Copy()
   Case Keys.X
    DirectCast(ctrl, TextBox).Cut()
   Case Keys.V
    DirectCast(ctrl, TextBox).Paste()
   Case Keys.Z
    DirectCast(ctrl, TextBox).Undo()
  End Select
End If

End Sub

↑を実行するとCtrl+A以外の条件ではKeyDownイベントが発生しないのですが
どんな原因が考えられるでしょうか?
0432デフォルトの名無しさん2008/01/12(土) 06:00:15
テキストやjpgファイルの作成日時をVBから変更することは出来るんでしょうか?
0433デフォルトの名無しさん2008/01/12(土) 10:37:43
System.IOの下を眺めとけや
0434デフォルトの名無しさん2008/01/12(土) 12:18:18
簡単なテキストエディタ機能を実装しているのですが
選択した文字列をコンテキストメニューから削除する方法で手間取っています

txtCommand.Text.Replace(txtCommand.Text, String.Empty)

としてますが、Undoしても効かない状態です。
Undoできるようにする方法はありますでしょうか。
0435デフォルトの名無しさん2008/01/12(土) 12:33:50
txtCommandの型は?
0436デフォルトの名無しさん2008/01/12(土) 12:45:44
>>435
TextBoxです
0437デフォルトの名無しさん2008/01/12(土) 13:25:46
>>434
SelectedText=""
0438デフォルトの名無しさん2008/01/12(土) 13:31:21
すみません、正しくは
txtCommand.Text.Replace(txtCommand.SelectedText, String.Empty) でした
0439デフォルトの名無しさん2008/01/12(土) 14:20:09
>>438
そのコードは何もしないと思うけど。戻り値を使ってないから。
で、>>437
0440デフォルトの名無しさん2008/01/12(土) 14:34:45
>>431
普通にCtrl+A以外も拾えたよ?
FormのKeyPreviewがTrueになってたら、イベント自体は絶対発生してると思うけど。
0441デフォルトの名無しさん2008/01/12(土) 19:29:57
アイコンをつくって実行ファイルにつけたのですが
アイコンがちっちゃいサイズで表示されるとき
絵がちゃんと表示されないんですがなぜですか?
0442デフォルトの名無しさん2008/01/12(土) 20:07:54
TextBoxに長い文字列を表示させたいのですが、
TextBoxの幅を十分に取ることができません。

それで、複数行に表示させたいと思います。
しかし、文字列に改行を含ませるわけにはいきません。

それでtextBox.Multiline=true、textBox.AcceptsReturns=false
と設定してみたのですが、
入力してみると改行を受け付けてしまいます。

なぜ????
何か思いっきり勘違いしてる?

他のプロパティはデフォルトのままです。
0443デフォルトの名無しさん2008/01/12(土) 20:20:01
なんでMSDN読まないの?
0444デフォルトの名無しさん2008/01/12(土) 20:39:48
OK ありがとう
AcceptsReturnsでは望みの動作は得られないってことね

じゃ、上記の動作をさせるにはどうしたらいいんでしょう?
0445デフォルトの名無しさん2008/01/12(土) 20:50:13
自己レス
KeyDownとKeyPressの組み合わせできました
04464312008/01/12(土) 22:35:07
>>440
ありがとうございます。
自分もさっきフォームにテキストボックス1つのシンプルな配置でやってみましたが
ちゃんと拾いますね・・・
でももともとのフォームで実行するとCtrl+A以外ではイベントが発生しないんです・・・
ちなみにそのフォームというのは

下 Form - SplitContiner - TabControl - Panel - TextBox 上

の順番で重なってますが全く原因がわかりません・・・
04474312008/01/12(土) 22:39:00
ちなみのちなみですがKeyDownではなくKeyUpだと>>431の条件すべてで
イベントが発生するのですが、KeyDownだけ発生しない原因てなんでしょうかねぇ・・・
0448デフォルトの名無しさん2008/01/13(日) 00:10:35
試していないから解らんが
>下 Form - SplitContiner - TabControl - Panel - TextBox 上
なら
If Not TypeOf ctrl Is TextBox Then Exit Sub
↑ここで抜けてる気がするなぁ。

Ctrlの定義を
Dim ctrl As Control = Me.SplitContainer3.TabControl.Panel.ActiveControl
にしなきゃダメな悪寒

イベントが発生しないと書いているが、イベント事態は発生してるんじゃない?
イベントハンドラの一番上にmessageboxなりConsole.writeなり書いてイベント事態が起きてるかどうか確認してみた?

04494312008/01/13(日) 02:00:27
>>448
MessageBoxで確認しているので間違いなくCtrl+A以外ではイベントが発生していません
Controlキー単独だとKeyDownイベントが発生しますが、Ctrl+A以外のキーだと駄目です

マジで心当たりのある方、お願いいたします・・・
0450デフォルトの名無しさん2008/01/13(日) 02:10:22
階層上のすべてのコントロールでキーイベントとってみれば。
Spy+使ってどのハンドルにメッセージが来てるか見るとか。
0451デフォルトの名無しさん2008/01/13(日) 02:55:05
>自分もさっきフォームにテキストボックス1つのシンプルな配置でやってみましたが
>ちゃんと拾いますね・・・
解決糸口はここだよなぁ。上記の通りであれば、環境的な問題ではなく、何かのコントロールがジャマしてるんだろうか。
SplitContiner - TabControl - Panel - TextBox
となっているみたいだけど、
SplitContiner - TextBox
TabControl - TextBox
Panel - TextBox
みたいな感じで地道に試してみるしかないのかな?
0452デフォルトの名無しさん2008/01/13(日) 03:05:30
>>431のコードで
>>446の
下 Form - SplitContiner - TabControl - Panel - TextBox 上
の順にコントロール置いて試してみたが普通に全部拾えた。
FormのKeyDownが拾えなくなるってことは、どこかでFormのKeyPreviewをFalseにするようなコードが書かれてるのか?
TextBox自体のKeyDownはちゃんと発生しているのかな?
0453デフォルトの名無しさん2008/01/13(日) 04:35:40
ちょっと質問です。
VB.NETでDataTableオブジェクトとかが使用しているメモリ量を見たいんですが
タスクマネージャでは今一歩正確性に欠けるので(できれば)フレームワークなどの機能で計測できないでしょうか?
0454デフォルトの名無しさん2008/01/13(日) 04:44:57
CLRプロファイラじゃ駄目なん?
0455デフォルトの名無しさん2008/01/13(日) 04:50:17
>>454
早速のレスサンクスです!!!
ググってサイトみてみました

おそらくヒープメモリの割り当てサイズが知りたいのでまさにこれではないかと!!!!
ちょっと明日にでも使ってみます!!

助かりました ありがとうございました。
0456デフォルトの名無しさん2008/01/13(日) 05:06:02
>>449
俺もそうなった時があった。
MDIフォームの子フォームとして使ってたため
イベントがメニューのショートカットに持っていかれてた。
0457デフォルトの名無しさん2008/01/13(日) 19:46:44
すいません。くだらない質問だと思いますが、ご教授お願いします。


tabコントロールで特定ページに入ったとき、
既に生成されてるDataTableを元グラフを描画しようとしています。

そもそも、VBの挙動の根幹部分から分かっていないのですが、
特定タブに入った後に、ボタン等のイベントを拾って描画はできるのですが、
これだと、別のタブに移動した後に、再びこのページに戻ってくると、
再度ボタンを押して描画させなければなりません。
それだと面倒なので、特定ページに入ったときに描画させるようにしたいのですが、

Handles TabPages1.Click

だと早すぎるのか?描画がされて消えてしまうような感じですし、
どのイベントを拾えばいいのかが分かりません。

どなたかこの辺を勉強しろでも構いませんので、教えてください。
よろしくお願いします。

0458デフォルトの名無しさん2008/01/13(日) 19:50:07
ドトネトでは、というかWindowsでは描画はWM_PAINT(Paintイベント)で行うのが基本。
つまりその基本どおりにやるだけじゃないの?
04594572008/01/13(日) 20:11:46
>>458
やっぱAPIを知らなきゃ話にならないですよね・・・

もう一つだけ、たぶんこれも勉強しろって事なんでしょうけど
教えていただきたいのですが、

Private Sub TabControl1_SelectedIndexChanged( _
ByVal sender As Object, ByVal e As System.EventArgs) _
Handles TabControl1.SelectedIndexChanged

MsgBox("test")
graph = New Graph(GraphArea, 100, 90)

End Sub

Graphクラスの初期化時に、グラフの背景を描画させているのですが、
TabControl1の選択時に、

MsgBox("test")と、ワンクッションおくと、きちんとグラフが描画されるのに、
これが無いと描画されないというのは、どういう原理なんですかね・・・?


もしよろしければ教えてください。お願いします。
0460デフォルトの名無しさん2008/01/13(日) 20:28:43
描画されないっていうか、描画されたあと上描きされてるんだよ。
何もないと
グラフ描画したあとペイントイベントで上描き(→描画されていないように見える)
メッセージボックスを表示すると、そこで処理がとまるからペイントイベント先行、その後グラフ描画
となるからグラフが表示される。
>>458の言うとおり、Paintのイベントハンドラ内でグラフ描画処理すべし
04614572008/01/13(日) 20:39:46
>>460
なるほど、そういう事ですか。
ご親切に教えていただきありがとうございました。

もう少し精進してきます
0462デフォルトの名無しさん2008/01/13(日) 20:44:24
ちゅかペイントのイベントハンドラで書かないと、フォームが重なったり隠れたりしたあと再描画されないからな(基本的に)。
まぁがんがれ(`・ω・´)!
0463デフォルトの名無しさん2008/01/14(月) 12:06:10
フォーム以外のところをクリックした時のマウスダウンイベントを取得するにはどうしたら
いいですか?このまえWM_NC**を使うということを聞いたのですが、マウスダウンのイベントが発生しないので困ってます
どなたか教えてください
0464デフォルトの名無しさん2008/01/14(月) 12:14:14
グローバルフック
04654312008/01/14(月) 14:49:18
>>456
まさにそのとおりでした。ありがとうございます。
MDI子フォームでいつの間にか標準のメニューが挿入されていて
Ctrl+A以外がバッチリ割り当てられていたのですが
MenuStripのVisibleをFalseにしてあるので全く気づきませんでした。
IDEのほうでショートカット割り当てられると割り当てたキーでは
同じキーイベントは拾えなくなるんですね。

レスいただいたみなさん、ありがとうございました。
0466デフォルトの名無しさん2008/01/14(月) 22:16:53
お世話になっております。

ttp://www.ideaxidea.com/archives/2007/10/windows_pc.html

こちらの記事の2番目のフォームのようなコントロールボックスを作成したいのですが、どういった方法があるでしょうか。
0467デフォルトの名無しさん2008/01/15(火) 00:55:29
>>431
MDI子フォームと書かずに解答を出せとは難問だったな。
原因と思しき場所を絞って質問するのもいいが、全体を教えてくれなきゃ想像付かん場合もある。
何であれ、解決してよかったが…。
0468デフォルトの名無しさん2008/01/15(火) 01:00:05
>>466
コントロールボックスってなんぞ?
2番目って
ttp://www.ideaxidea.com/archives/2007/10/14/mainte_2.gif
これかな?
これのどの部分を作りたいの?
0469デフォルトの名無しさん2008/01/15(火) 03:14:12
 
'.gif\P2P
r
0470デフォルトの名無しさん2008/01/15(火) 08:06:44
>>468
最小化、最大化、閉じるボタンの部分です
.NETのプロパティがControlBoxなのでそういう名称だと思っていましたが…
画像のようにデザインを変更したいのです
04714682008/01/15(火) 10:27:18
そういえばそういう名称だったねwww
なんか脳が溶けてました

これってVistaのUIで、別に自前でつくっているわけじゃないと思う。
別OSでそっくりにつくるなら、タイトルバー消して、ボタン配置して、画像用意するかVisualStyleRendererでボタンの外装作り変えて…って感じになるのかな。


0472デフォルトの名無しさん2008/01/15(火) 12:44:42
VistaのUIだと思ってダウンロードしたのですが、XPでもこのUIでした
タイトルバーを消してやってみます
ご教授ありがとうございました
0473デフォルトの名無しさん2008/01/15(火) 14:47:28
ProgressBarについて教えてください。これを マーキースタイルにして
そのスピードをMarqueeAnimationSpeedでセットすると、OSはXpですが
Valueを操作しなくても自動的に動いてくれるようになるでしょうか。
ためしにそれだけやったところでは動き出すようにはなりませんでしたが、
メソッドを何か叩くことでスタートするのでしょうか。何卒よろしくお願いします。
0474デフォルトの名無しさん2008/01/15(火) 14:55:40
Valueを操作しないで、何を持って100%だのなんだの感知させる?
0475デフォルトの名無しさん2008/01/15(火) 15:15:29
>>474
さっそくどうもです。MarqueeAnimationSpeed は何がどこまで動く
速度になるかがわかりませんでした。Valueを入れて動かすとします
とスピードの効果が出てくるのでしょうか。そこがわかりません。
0476デフォルトの名無しさん2008/01/15(火) 15:57:23
Marqeeは2003/Vistaでしかサポートしてなかったような希ガス
0477デフォルトの名無しさん2008/01/15(火) 15:59:37
Windows XP Home Edition, Windows XP Professional x64 Edition, Windows Server 2003 プラットフォームメモ : Marquee スタイルはこれらのプラットフォームでのみサポートされています。
0478デフォルトの名無しさん2008/01/15(火) 16:22:21
クラシック表示にしてまいか?
0479デフォルトの名無しさん2008/01/15(火) 18:15:47
>>478
クラシック・スタイルではVisualStyleを使っていないので自動的には動かず
XpスタイルにすればVisualStyleを使っているので自動的に動くのでしょうか・・・。
どちらでも同じようにValueを与えないと動かないような・・・、それではもう一度
確認してみますです。
04804732008/01/15(火) 18:48:51
>>479
試してみましたら、きちんと動作していました。認識が違っていました。
バックグラウンドワーカーと併用したときに何か別の原因で動かなかった
のを間違って記憶していました、すみません・・・。

ただやってみますとやはりシングルスレッドで動かすと動きが早くなったり
遅くなったりして等速では動かないですね・・・、これはタイマーでValueを
操作しても同じでした。等速で動かすには別スレッドでコントロールを直接Value
を与えることができないと無理そうな感じでした、といってもそういうオブジェクト
をいじるとNGなのですよね??
0481デフォルトの名無しさん2008/01/15(火) 18:54:05
つうか裏でなんか重い処理してんだろ?
描画は多分優勢度低いから無理がある可能性が高い気がするよ。
0482デフォルトの名無しさん2008/01/15(火) 22:56:52
>>480
どうしても気になるならフリースレッドの処理に時々Thread.Sleep()入れてやれば
改善するんじゃない?

でもそんなことにこだわる意味があるのかな?
プログレスバーの意義はユーザーに処理がフリーズしてない安心感を与えることだろうから、
それさえできれば必要十分な気がするけど。
0483デフォルトの名無しさん2008/01/15(火) 23:12:39
>>481-482
>プログレスバーの意義はユーザーに処理がフリーズしてない安心感を与えること
わかりました。つっかえつっかえ動くような感じなのですが、それがプログラムの
作業によるのだということでこれでよしと考えました。ありがとうございました!
0484デフォルトの名無しさん2008/01/16(水) 02:33:54
>>483
裏で動いてる処理を何一つとして理解してないだろおまえ……
0485デフォルトの名無しさん2008/01/16(水) 09:58:17
質問です。ExplorerなどではHDD、CD-ROM、メモリースティック、
ネットワークドライブ、などの媒体をそれぞれ見分けてそのアイコンが表示されて
いました。

これというのはそれを示す何かのパラメータを見て行っているのだと思いますが、
このパラメータを取り込むためのクラスがありましたら教えてください。
0486デフォルトの名無しさん2008/01/16(水) 10:09:15
DriveInfo.DriveType
0487デフォルトの名無しさん2008/01/16(水) 10:13:54
>>486
おお、あるのですね!ありがとうございました!!調べてみます!!
0488デフォルトの名無しさん2008/01/16(水) 10:26:23
質問があります。

コンテナコントロールを派生させ子コントロールが置けるクライアント領域の範囲
を変更したいのですが、どのメソッドをオーバーライドすればいいのでしょうか?

例えば、コンテナコントロールの Width が 100 で Height が 200 ですと、
内部に子コントロールを配置してその Dock を Fill にすると、そのコントロールは
Width 100 Heidht 200 になりコンテナコントロール全体に広がりますが、
このコンテナコントロールのクライアント領域を変更し、若干余白を持たせるため
に既定で、上、下、左、右から 10 ピクセル程狭めたオリジナルのコントロールを
作成したいのです。
0489デフォルトの名無しさん2008/01/16(水) 10:32:17
させ子がいると聞いて飛んできました
0490デフォルトの名無しさん2008/01/16(水) 11:08:43
コンテナのプロパティになかったっけ?
0491デフォルトの名無しさん2008/01/16(水) 11:11:28
Paddingのことか
04924882008/01/16(水) 11:30:47
通常 Panel とかのコンテナコントロールのクライアント領域は、

横 0 〜 Width
縦 0 〜 Height

ですよね。

これを変更して周りに 10 ピクセル程クライアント領域として認めない領域を作った場合、

横 10 〜 Width - 10
縦 10 〜 Height - 10

になりますが、この場合 Padding の Left や Top が 0 の場合は、
クライアント領域の一番左上(10、10)になるようにしたいのです。
恐らく Control クラス辺りをメソッドなどをオーバーライドすれば
出来そうな予感がするのですが、わからないのです。
0493デフォルトの名無しさん2008/01/16(水) 11:44:38
VB VB.netのアルバイト情報
www.sfpac.com/
0494デフォルトの名無しさん2008/01/16(水) 12:01:25
怪しい
0495デフォルトの名無しさん2008/01/16(水) 12:06:18
面接官「特技はブラックジャックとありますが?」
学生 「はい。ブラックジャックです。」
面接官「ブラックジャックとは何のことですか?」
学生 「手術です。」
面接官「え、手術?」
学生 「はい。手術です。患者全員の足元を見て手術料をふんだくります。」
面接官「・・・で、そのブラックジャックは当社において働くうえで何のメリットがあるとお考えですか?」
学生 「はい。社員がケガしてもお金払えば治せます。」
面接官「いや、当社にはケガをするヤワな輩はいません。それに人のお金をふんだくるのは犯罪ですよね。」
学生 「でも、重症の足でも切断せずに治せますよ。」
面接官「いや、切断とかそういう問題じゃなくてですね・・・」
学生 「モグリなんですよ。」
面接官「ふざけないでください。それにモグリって何ですか。だいたい・・・」
学生 「医師免許を持っていな医師です。闇医者とも書きます。バレないコツは・・・」
面接官「聞いてません。帰って下さい。」
学生 「あれあれ?怒らせていいんですか?ふんだくりますよ。3000万円。」
面接官「いいですよ。ふんだくって下さい。おふくろの命が助かるなら3000万円くらい一生かかっても払います。」
学生 「その言葉が聞きたかった。」
面接官「先生・・・」
0496デフォルトの名無しさん2008/01/16(水) 12:21:09
Panelの中にPanel作ってやった方が早くね?
0497デフォルトの名無しさん2008/01/16(水) 13:55:22
>>496とほぼ同じ意見だが、それだと親のパネルにもコントロールが置けてしまうので、
UserControlの指定した位置((10,10)とか)にPanelを配置したコントロールをつくればいいんじゃない。
0498デフォルトの名無しさん2008/01/16(水) 14:51:37
いよいよ2月に2008が発売になると聞いたのですが、
2008で作ったソフトははVISTAで何も追加しなくとも
うごくのでしょうか?
NET3.5っていうことはNET3.0が入っているVISTA
ではダメということ?
これではいつになってもVB最新版で作ったソフトは
最新OSでは満足に動かないってことになるのでは?
だれかご存知の方いらっしゃいませんか
0499デフォルトの名無しさん2008/01/16(水) 14:54:35
心配無用
0500デフォルトの名無しさん2008/01/16(水) 16:03:25
2008なら.NET Frameworkのバージョンが選択できるから、心配なら3.0でやればいいじゃん。
どうせ中身2.0なんだし。
0501デフォルトの名無しさん2008/01/16(水) 16:30:54
Imageオブジェクトで、PNG形式のものをBMP形式に変換するメソッドとかは
どこかにあるでしょうか?
0502デフォルトの名無しさん2008/01/16(水) 16:52:24
Image.Save(String, ImageFormat)
0503デフォルトの名無しさん2008/01/16(水) 16:55:10
>>501
http://www.google.com/search?num=50&hl=ja&safe=off&as_qdr=all&q=image+save+%E3%83%95%E3%82%A9%E3%83%BC%E3%83%9E%E3%83%83%E3%83%88+-1%E5%9B%9E%E3%81%8F%E3%82%89%E3%81%84%E3%82%B0%E3%82%B0%E3%82%8C%E9%A6%AC%E9%B9%BF%EF%BC%81&lr=lang_ja
0504デフォルトの名無しさん2008/01/16(水) 17:53:02
>-1回くらいググれ馬鹿!
激しくワラタw
しかし、>>503もツンデレだなw
0505デフォルトの名無しさん2008/01/16(水) 20:13:24
>>488
何故4方にアンカー打てばいいだけの話を面倒にしようとしているのかね?
05064852008/01/17(木) 00:21:22
昨日 DriveInfo.DriveType の件、教えていただきありがとうございました。

CD-R をフロッピーと同じように読み書きできる B's Clip というソフト
を導入していました。このときに Explorer では、コンテキストメニューや
D&DなどによるCD-Rの読み書き、およびフォルダのリネームなどができました。

それで、Win32APIの SHFileOperation()でのコピーなどはできたのですが、
Explorerではできたフォルダのリネームを My.Computer.FileSystem.RenameDirectory()
でやってみたところ、これは書き込みができない旨のメッセージが出てきて
失敗していました。

また、Explorerでは「取り出し」というメニューがあってCD-Rを取り出しできました。

こうした特定のファイルやデバイスの操作をExplorerではできる場合、それを
なんらかの形でプログラムからもCD-Rドライブなどへの操作を可能にする
ためにはどんな方法をとるべきでしょう?どこかにそれ用のAPIなどがわかる
ようになるでしょうか?
0507デフォルトの名無しさん2008/01/17(木) 00:58:58
APIならこんなの使ってみれば?
ttp://support.microsoft.com/kb/165721/ja

別にこれじゃなくてもいろいろ出来ると思うけど
0508デフォルトの名無しさん2008/01/17(木) 01:03:27
>>506
COM経由でいけると思う
IShellFolder::SetNameOf とか IContextMenu.InvokeCommandとか。
知らんけど。

CDの取り出し自体はDeviceIoControlでできる
0509デフォルトの名無しさん2008/01/17(木) 01:04:13
>>506
そのCDドライブ上のファイル操作はB'sが
シェル拡張を仕掛けているからできるようになっている。

だから、SHFileOperationのようなシェルに対する操作はできるが、
My.Computer.FileSystemはシェルより下層の操作となるため、そのように失敗する。
ファイル操作に関してはSHFileOperationに限らずシェルの機能を使えばいけるはず。
05104852008/01/17(木) 07:30:59
>>507-509
ああ、こんなに早く多くの明解なご指導、感謝に堪えません。
Shell、IShellFolder、DeviceIoControl これらにトライしてみます!
ありがとうございました!
0511デフォルトの名無しさん2008/01/17(木) 17:32:29
質問です。
SqlDataReaderからデータを取得するとき、途中で安全に中断するにはどういうやり方が好ましいでしょうか?
■ このスレッドは過去ログ倉庫に格納されています