VBのAPI関数を使用して、98かNTかは判断できるのですが、
NTと2000はどうやって判断すればよろしいでしょうか?
教えて下さい、お願いします。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

C言語の場合の話ですが、


http://www.okweb.ne.jp/kotaeru.php3?qid=209197
にあるようにOSVERSIONINFO構造体を使用します。

あとは、GetVersionEx()のAPIをDeclareします。

参考URL:http://www.okweb.ne.jp/kotaeru.php3?qid=209197
    • good
    • 0

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

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

QVB.NETとVB6.0でAPIを使う場合、書き方は違いますか?

VB.NETで使うAPIというものを勉強してみたいと思って
本を探しているのですが、.NET用の本が少ないようです。

APIを使う部分のコードの書き方は.NETと6.0では大きく違うでしょうか?

Aベストアンサー

BLUEPIXYさんが言われているように、使用するための引き込みの宣言が微妙に異なります。

大きく違う部分としては、メモリを意識する方法だと思います。
何かと
Imports System.Runtime.InteropServices.Marshal
クラスを多用することになります。


例えばVB6時代に
・VarPtrを使用しなければならない場合
・APIの引数に構造体を利用し、構造体内部のメンバに配列が存在する場合
・APIの引数に構造体を利用し、構造体内部のメンバに固定長の文字列型が存在する場合
・APIの引数に構造体を利用し、構造体内部のメンバのIN/OUTなどの属性を細かく設定しなければならない場合
・APIの引数に、構造体の領域サイズ長を渡す必要がある場合
・API関数実行後、取得したポインタから、特定の型にキャストする場合
などなど、、、

http://okwave.jp/kotaeru.php3?q=2092957
に、Marshalクラスを多用しているサンプルを書いてますので、よろしければどうぞです。



ちなみに私の場合は、.NETの書籍は一冊も購入しておりません。
VB6時代に購入した、APIの書籍
「Visual Basic Tips 1000」
http://bookweb.kinokuniya.co.jp/guest/cgi-bin/wshosea.cgi?W-ISBN=4883371980
を愛用しております。
ガリバーさんが出している書籍で、今は亡き[vbvbvb.com]のAPIサンプルが出ております。
HTMLで一覧が出ているので、秀丸などでGREPして、使用したい目的のAPIが素早く検索できます。

さらに
http://www.microsoft.com/japan/msdn/net/general/win32map.asp
で、本当にAPIを使用しなければならないかを調べた後、どうしてもAPIならば、サンプルソースをEXCELのVBAなどに張って、変換を行っております。


APIで使用するDLLは「VB6用」でもないし「.NET用」でもないですよね。
わたしは最近本屋さんに行っておりませんので、.NET用で多くのサンプルがある本が出版されているのか知らないのですが、、、
「.NET用の本」として固執せずに、多くのサンプルが出ている本を求めた方が、何かと便利だと思います。
「どのようなAPI関数が存在するか」「API関数で可能なこと」
が見えます。


VB6用の本を購入した場合、どうしても変換がわからない場合は、ここのような掲示板や、メーリングリストに投稿してはいかがでしょうか?
変換は「慣れ」です。繰り返し行うことで、自然と身につきます。変換のパターンは、経験上、それほど多いとも思いません。

そうすることにより、「このAPIは、、、」という技術ではなく「このタイプのAPIは、、、」という、参考文献の存在しないAPI関数にも強くなれると思います。
機会があれば、自分でCで呼び出される側のDLLを作成してみるのも、スキルアップだと思いますよー
http://okwave.jp/kotaeru.php3?q=235547

BLUEPIXYさんが言われているように、使用するための引き込みの宣言が微妙に異なります。

大きく違う部分としては、メモリを意識する方法だと思います。
何かと
Imports System.Runtime.InteropServices.Marshal
クラスを多用することになります。


例えばVB6時代に
・VarPtrを使用しなければならない場合
・APIの引数に構造体を利用し、構造体内部のメンバに配列が存在する場合
・APIの引数に構造体を利用し、構造体内部のメンバに固定長の文字列型が存在する場合
・APIの引数に構造体を利用し、構...続きを読む

QVBで、String型のデータが、全角か、半角かを判断する関数は・・・

こんにちわ。

VB5.0で、String型のデータが、全角か、半角かを判断する関数はあるでしょうか?また、判断方法を教えてください。

よろしくお願いします。

Aベストアンサー

こんにちは。maruru01です。

Asc関数で文字のコードを取得して判断すればいいと思います。
半角はコードが0~255だったと思うので、次のようになります。

文字変数をsとして
If 0 <= Asc(s) And Asc(s) <= 255 Then
  MsgBox "半角です"
Else
  MsgBox "全角です"
End If

ちなみに私の環境はVB6.0なので5.0では試してません。(問題ないと思いますが。)
では。

QVB.netである関数を呼んで、その関数内で呼び出し元関数を知る方法。

呼び出し元関数からある関数を呼びます。
その呼ばれた関数で、引数などで渡すのではなく、自然に前の関数の情報を取得できる方法はないでしょうか?
どこかに、自然に保持されているとか?
もし、不可能ならそういう答えもお待ちしてます。
よろしくお願い致します。

あと、もう一つ、普通のシステムでデバッグログなどはどうやって出すのでしょうか?
出す情報などがわかると幸いです。
ログについての詳しいことがのってるサイトでもあれば非常に助かります。

よろしくお願い致します。

Aベストアンサー

自然にというのが意味不明なのですが、普通引数で渡すものですし、その手続きが出来ないのなら、モジュールレベルで変数を宣言して情報?を共有してしまえばいいかなと。

---
dim a as integer

function aaa as integer
 a=0
 bbb()
end function

function bbb as integer
dim b as integer
 b=a
end function

デバッグログを外部ファイルに書き出したいということであるなら参考URLで。
ただ書き出す情報については開発する人が決めることですが・・・。一般的にこういう情報を書き出すなんてありませんよ。どういう情報を確認したいのかなんて開発者にしか分からないことでしょうに。
普通はあるエラーが発生した時に確認したい変数の値とか、環境情報だとか、そういうものを書き出すかと。
特に目的がないなら別に書き出す必要もないでしょう。

参考URL:http://dobon.net/vb/dotnet/programing/tracelisteners.html

自然にというのが意味不明なのですが、普通引数で渡すものですし、その手続きが出来ないのなら、モジュールレベルで変数を宣言して情報?を共有してしまえばいいかなと。

---
dim a as integer

function aaa as integer
 a=0
 bbb()
end function

function bbb as integer
dim b as integer
 b=a
end function

デバッグログを外部ファイルに書き出したいということであるなら参考URLで。
ただ書き出す情報については開発する人が決めることですが・・・。一般的にこういう情報を書き出すな...続きを読む

QVB6.0のString関数に代わるVB2008のそれは?

2009年1月27日にVB 2008Expressをダウンロードしたばかりの初学者です。
ですから、色々とわからないことだらけです。
で、今回は VB6.0のString関数に代わるVB2008のそれ。

? String(12, "*")
************

Function Strings(ByVal C As Char, ByVal L As Integer) As String
  Return Space(L).Replace(" ", C)
End Function

少しは探しましたが、適当なのがなくてStrings関数を作成してしまいました。
2週間程度の初学者。
しかも、文字列関連のヘルプは昨日に初めて紐解いたばかり。
ですから、「適当なのがない」との判断はかなり怪しいものです。

そこで、「VB6.0のString関数に代わるVB2008のそれは、これですよ!」という回答をお願いします。

Aベストアンサー

'ああっ、思いっきり書き間違えてるorz

'5を外に出した
Dim s2 As String = new String(Char.ConvertFromUTF32(42),5)

'文字数を書くの忘れてる
Dim s3 As String = New String("ABC".toCharArray()(0),5)

QVBでWININET API

こんばんわ。VBでWININET APIを使用してIEのインターネットオプションの設定を変える方法はあるのでしょうか。APIを使わなくてもいい方法があるのでしたらそれでも構いません。インターネットオプションの設定が変えれればいいので。宜しくお願い致します。

Aベストアンサー

なるほどーそういうことですかー
勘違いしてました。
それならば大まかに予想がつきます。
レジストリエディタで
HKEY_CURRENT_USER
SoftWare
Microsoft
Internet Explorer
の中を操作してあげれば可能だと思います。

この中の情報は公開されてないと思うので、自分でインターネットオプションを変更しながら、どこがどのように変わるのかを調査する必要があると思います。

後はレジストリの変更を
VBの機能を使うなら SaveSetting
APIなら RegCreateKeyEx
で、かければよいと思います。


このカテゴリの人気Q&Aランキング

おすすめ情報