現在VB2008でプログラムを組んでいるのですが、(VB初心者です)
現在の壁紙を取得し、そのファイルをコピーしてCドライブ直下に保存する方法がわかりません。
壁紙の取得はできました(sPathにアドレスが出る) ただそれをコピーできません。

以下のようなエラーが出ます。
パスに無効な文字が含まれています。

ソースコードは以下の通りです。
Dim sPath As New System.String(" ", MAX_PATH + 1)
SystemParametersInfo(SPI_GETDESKWALLPAPER, MAX_PATH, sPath, 0)
My.Computer.FileSystem.CopyFile(sPath, "C:\Test.bmp", True)

原因不明でよくわかりません。 教えてくださいお願いします。

A 回答 (1件)

>My.Computer.FileSystem.CopyFile(sPath, "C:\Test.bmp", True)


sPathに取得された文字列の次がNULL文字になっています。
NULL直前までの文字列を使います。
My.Computer.FileSystem.CopyFile(Microsoft.VisualBasic.Left(sPath, sPath.IndexOf(vbNullChar)), "C:\Test.bmp", True)
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q無料壁紙のサイトから素敵な海の写真を見つけ、デスクトップの背景に設定し

無料壁紙のサイトから素敵な海の写真を見つけ、デスクトップの背景に設定しました。
あまりにきれいなので、後日ブログの背景にも使いたいと思ってさがしたのですがどうしてもたどり着くことができません。
今デスクトップの背景になっている写真をフォトギャラリーに入れることはできますか?
パソコン初心者ですのでわかりやすく教えていただきたいのですが・・・
どうぞよろしくお願いいたします!!

Aベストアンサー

著作権はクリアされているとして、背景に設定した画像はそのままコピーしてフォトギャラリーに入れることは可能です。

マイピクチャフォルダの中の画像を右クリックから「背景に設定」とした場合
C:\Users\<ユーザー名>\AppData\Roaming\Microsoft\Windows Photo Viewer
に「Windows フォト ビューアー壁紙」という名称で保存されます。

Web上の画像をIEで右クリックから「背景に設定」とした場合
C:\Users\<ユーザー名>i\AppData\Roaming\Microsoft\Internet Explorer
に「Internet Explorer Wallpaper」という名前で保存されます。

QVB6変数の宣言dim j,k,p,m,n as Integerは良くない?

お世話になります。

VB暦1年です。

汎用の変数宣言でタイトルのように
dim j,k,p,m,n as Integer
dim ssa,ssb as String

など、カンマ区切りで変数宣言を使っていたのですが
最近、知人にasの手前の変数は型どおり宣言されるが
その手前の変数はVariant型で宣言されてしまうと指摘されました。

指摘されるまで気にはしていませんでしたが
ウォッチで確認すると変数に代入されるまでは
型がVariant/Emptyとなってます。

以後、気をつければいいのですが
過去にコーディングしたプログラムにも多少、使用していて客先に納品してしまっているものもあります。
後々、問題になるのかな?

Aベストアンサー

おっしゃる通り、カンマで区切る場合は、
Dim j As Integer, k As Integer, p As Integer
という風にすべてAsで型を明示しないと、
Variant型になってしまいます。
つまり、
Dim j
Dim k
Dim p As Integer
とわけて書いた場合と同じです。
(VB.NETは、
Dim j, k, p As Integer
で全部Integerになるようなので、ややこしいですね)

すでにご存知とも思いますが、一般的にVariant型を多用しているコードは、宣言を見ても、どういう種類の値を使うかわかりづらいですし、比較対象の型を誤るというようなバグの原因になりやすいので、型を明示できるような状況で敢えてVariant型を使うべきではないです。

しかし、すでに納品してしまったコードについては、問題はメモリを余計に使ってしまうことくらいではないでしょうか?
他の人が気づかなかったことから考えるに、多分狭いスコープで使っていますよね? 比較対象や代入するべき型を誤るというようなロジックの誤りがない限り、少なくとも動作上の問題は発生しないと思います。ただ、直せる機会があるのであれば、直した方がいいとは思いますが。

おっしゃる通り、カンマで区切る場合は、
Dim j As Integer, k As Integer, p As Integer
という風にすべてAsで型を明示しないと、
Variant型になってしまいます。
つまり、
Dim j
Dim k
Dim p As Integer
とわけて書いた場合と同じです。
(VB.NETは、
Dim j, k, p As Integer
で全部Integerになるようなので、ややこしいですね)

すでにご存知とも思いますが、一般的にVariant型を多用しているコードは、宣言を見ても、どういう種類の値を使うかわかりづらいですし、比較対象の型を誤るというよう...続きを読む

Qパソコンのデスクトップが一杯になったら

パソコンのデスクトップが一杯になった状態でPDFをデスクトップ上に保存しましたが、デスクトップ外に保存されたようで、エクスプローラーで確認したら、そのPDFはデスクトップ状に存在していることになっていました。
なのでデスクトップ上に空きを開けて、デスクトップ左クリックで最新の状態に更新しましたがでてきません。どうすればデスクトップ内に表示させられますか?

Aベストアンサー

どうしてもデスクトップに置きたいのなら、ちょっと整理をして見ましょう。
ジャンルで分類してもいいですが、最低ここ1ヶ月使ったことのないファイルを入れるホルダーと
PDFってホルダーを作ってはいかがでしょうか?
そして、PDFはPDFってホルダーに全部入れてしまいましょう。
そうすると、ディスクトップは非常にすっきりするはずです。
もちろんそのPDFってホルダーをクリックすると、PDFだけが表示されます。
それでもPDFでいっぱいになったら、新しいホルダーを作って保存するか、
いっそのこと、用意されたホルダを使うか、c;なりd:に移動させてそこで
展開させましょう。今あなたがやっている方法は、起動にとても時間がかかる方法です。
ディスクトップは最小限しか置いておかないのは鉄則です。

QVB6の _ExtentX, _ExtentY

VB6 アプリケーションのメンテナンスをしています。
修正前後で FRM ファイルのソース差分をとって確認したところ、_ExtentX, ExtentY の値が変わっていました。

今回の修正ではいじっていないのですが、変わってしまいまってました。
名前から、水平方向と、垂直方向の領域に関するプロパティと思われるのですがどこで設定されているのか分かりません。

そこで、質問ですが

(1) このプロパティの意味は何でしょうでしょうか
(2) このプロパティ値が変わることによりどのような影響があるのでしょう
(3) このプロパティは意識する必要があるのでしょうか。

以上、ご教示願います。

Aベストアンサー

全くの素人ですが、

1 コントロール(フォーム?)のHIMETRIC単位によるwidthとheight
http://www.xtremevbtalk.com/showthread.php?t=10994
2 フォームのサイズが変わっているのではないでしょうか?
3 フォームは普通意図的にサイズ指定しているはずですので、意識の必要は無いと思います。

Qデスクトップのアイコンがなくなった

いつもクイック起動にデスクトップのアイコンがあってたくさんファイルを開けててもデスクトップのアイコンをクリックするとすぐにデスクトップの画面に戻っていたのですが、
この前、デスクトップのアイコンが邪魔だったのでゴミ箱に入れてしまいました。それからというものデスクトップのアイコンが見つかりません。ファイルの検索をして「デスクトップ」って入れても出てきません。デスクトップのアイコンを出すにはどのようにすればいいのでしょうか?
宜しくお願いします。

Aベストアンサー

こちらのFAQが参考になるかも。

できるネット - [クイック起動]にあった[デスクトップの表示]アイコンが消えてしまったが、どうすれば元に戻せるか
http://dekiru.impress.co.jp/faq/win/win001.htm
秘密結社 - 006 クイック起動の「デスクトップの表示」アイコンを削除してしまった場合の復帰方法
http://www.efix.co.jp/sc/himitu/006.htm


> ファイルの検索をして「デスクトップ」って入れても出てきません。

あれ?
サブフォルダを探すのチェックが無かったから失敗…とかなら良いのですが。

参考URL:http://dekiru.impress.co.jp/faq/win/win001.htm, http://www.efix.co.jp/sc/himitu/006.htm

Qカスタムコントロール作ってます(VB.NET)。VB.Net にVB.6のActiveX作成時にあったプロパティページ作成ができないようですが

タイトルどうりです。VBNETのカスタムコントロールでデザインモードにおけるフォームつまりプロパティページやビジュアルにプロパティボックスから設定できるようにしたいのですが、どうしたらできるでしょうか?VB6ではできたのですが、(Activexコントロール)。

よろしくお願いします。

Aベストアンサー

通常のプロパティと同じように、プロパティ ウィンドウに項目を表示して設定できるようにする必要があります。
具体的には、
1. カスタム コントロールのクラスに外部公開する Property プロシージャを作成して、内部で値を保存できるようにする。
2. そのプロパティの宣言部分で、プロパティ ウィンドウに表示するように指示する属性値を設定する。

こんな感じです。

参考URL:http://www.atmarkit.co.jp/fdotnet/winexp/winexp02/winexp02_01.html

Qデスクトップのアイコンがいっぱいになってきたのですがデスクトップで管理

デスクトップのアイコンがいっぱいになってきたのですがデスクトップで管理するのが便利だと思うようになりなかなか整理できずにいいます。
自分はデスクトップに何もおかないデザインが好きなで、Dockさえあればいいと思っています。

そこでデスクトップをもう一つつくれないかと思い、探してみましたが
デスクトップをもう一つつくれるのはつくれるのですが、既存のアイコンは変わらずウィンドウだけが消える仕組みです。
なのでデスクトップは見栄えの悪いままです。

デスクトップフォルダをもう一つ作るような気持ちで
二つのデスクトップができるようなフリーソフトを知りませんか?
雑な文ですいません;

回答よろしくお願いします。

Aベストアンサー

 
デスクトップに「もう一つ」という名のフォルダーを作り、その中にデスクトップのアイコンを入れればすっきりする
 

QMicroSoft BasicのDim文とVisualBasicのDim文の違い

私が20年前にMicroSoft Basicを使っていたときは、DIM文はDIMENSIONの略で配列型変数の宣言に使っていました。

最近VisualBasicの勉強を始めたのですが、変数の宣言はすべてDim文になっており、昔のMS BasicのDim文と意味合いが変わっているのに驚いています。

ここで質問させてください。
・なぜ配列を意味するDimension文が変数の宣言なのか?
・どのバージョンのBasicからDim文の意味が変わったのか?

私が使用していたのはNEC N-Basic,N-88Basic,N-98Basicです。

Aベストアンサー

VISUAL BASIC のDimは ディメンジョンの略です。
私の経験ではVB2.0時代からありました。

配列0を考えた場合変数とおなじであるからだとおもいます

Q「デスクトップの表示」をタスクバーに移動すると…

「デスクトップの表示」というコマンド(絵で表現されてます)がデスクトップにあります。これをクリックすると当たり前ですが、デスクトップが表示されるのですが、これ、デスクトップにあったら何の意味もありませんよね。
そこでこれをクリックし、タスクバーに移動し、元のコマンドをゴミ箱に移動しました。
その後タスクバーに移した方の上に、矢印を持っていくと「デスクトップの表示へのショートカット」となり、これをクリックすると、「ショートカットの検索」となります。
これおかしいです。
タスクバーに「デスクトップの表示」と素直に出ればいいものを「デスクトップの表示へのショートカット」です。
だとすると、オリジナルの「デスクトップの表示」を削除してしまうと、この機能は完全に消えてしまうのでは?

正しい「デスクトップの表示」のタスクバーへの入れ方について教えてください。

Aベストアンサー

↓にやり方が出ています。

参考URL:http://dekiru.impress.co.jp/faq/win/win001.htm

QVBSでDim、Private、Publicの違い

Dim、Private、Publicの違いを教えてください。

どのように使え分けるのですか?

Aベストアンサー

VBSで、どの程度、使いこなせられるかにもよりますね。
一般のVB系の言語と違って、それらのステートメントは出会うことは少ないです。

Dim が入っているので、変数に対してのことだと思います。以下のように3つ並べてみて、その違いが分かるはずです。Dim と Public は、基本的には同じになります。ところが、Private は、呼び出せません。ただし、Function や Sub につけるキーワードは意味が変わります。

On Error Resume Next
Class myClass
Public FirstName
Private LastName
Dim Genr
Property Get FullName
Fullname = FirstName & " " & LastName & " " & Genr
End Property
Sub AddName(fname, lname, gnr)
Firstname = fname
LastName = lname
Genr = gnr
End Sub
End Class
Set Class1 = new myClass
Class1.Addname "Mari", "Yaguchi" ,"Talent"
MsgBox(class1.FirstName)
MsgBox(class1.LastName)
MsgBox(class1.Genr)
MsgBox(Err.Description)
'技術評論社 ポケットリファレンス『VBScript』p.42を参考

VBSで、どの程度、使いこなせられるかにもよりますね。
一般のVB系の言語と違って、それらのステートメントは出会うことは少ないです。

Dim が入っているので、変数に対してのことだと思います。以下のように3つ並べてみて、その違いが分かるはずです。Dim と Public は、基本的には同じになります。ところが、Private は、呼び出せません。ただし、Function や Sub につけるキーワードは意味が変わります。

On Error Resume Next
Class myClass
Public FirstName
Private LastName
Dim Genr
Property Get FullN...続きを読む


人気Q&Aランキング