フリーウェアの紹介で「DLL不要/アンインストールする場合はフォルダごと削除・・」との記載をよく見かけますが、こういった「単体EXEで起動するソフト」はどのように作成されているか不思議です。

VBでは単体EXE起動は可能ですか?「VB*.*ランタイムモジュール必須・・・」など見かけますが、VBでは不可能なのでしょうか?

最近、VBを少しずつ覚え自分でも「フリーウェアの製作」を行ってみたいと思います。無知ではありますが、どなたか御教示願います。

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

A 回答 (8件)

>ただ私のほうは、動的リンクではなく、静的リンクでコンパイル可能なツールという意味で、発言しました。


なるほど、納得です。でもVBって静的リンク不可能でしたっけ?

>>フリーウェアの紹介で「DLL不要/アンインストールする場合はフォルダごと削除・・」
>とありますので、TAGOSAKU7さんの方法は現実的ではないような気がしますが・・・
そうですか?

調査しました。
ActiveXコントロールを使用せずに、標準コントロールだけで作成してあるのなら、EXEだけの配布でも、大丈夫みたいです。

VB6で必要とされるランタイムファイルについては、MSDN Libraryに出ているようです。

[MSDN Library Visual Studio 6.0]
└[Visual Studio 6.0 ドキュメント]
 └[Visual Basic ドキュメント]
  └[Visual Basic の使用方法]
   └[プログラミング ガイド]
    └[Visual Basic を使ってできること]
     └[作成したアプリケーションの配布]
      └[セットアップ ツールキット]
       └【配布するファイル】

ですので、ちょっとだけ訂正します。
フォームや標準コントロールだけの使用であれば、フォルダごとの削除は可能のようです。
ただしActiveXを使用したら、フォルダごとの削除は不可能のようです。
    • good
    • 0
この回答へのお礼

>ActiveXコントロールを使用せずに、標準コントロールだけで作成してあるのなら、EXEだけの配布でも、大丈夫みたいです。

先程のサンプルソースに別フォームを付加しコンパイル、VBの動作環境が整っていないPCで起動してみました。

OKです。わざわざ調査して頂き有難うございます。結論ですが「VBでも可能」ですね。ただ、ActiveXコントロールを使用せずにフリーウェアを作成するとなると難しくなるでしょうか?(機能制限等)

フリーウェアに限らず商品は、使いやすさや機能がないと利用価値がないですからね。
とりあえずVBでやるだけやってみます。そこで壁にぶちあたり抜け道も無ければ、改めてVBでの開発を見直そうと思います。

長い質疑応答になりましたが、有難うございました。
※MSDN Libraryの存在を今知りました。付け加えて有難うございます。

お礼日時:2002/01/19 14:44

>私の知識と理解の無さになにかもめているような・・・


いえいえ、私は、もめているという気はありません。TAGOSAKU7さんも非常に大人の回答をいただきありがとうございます。

動的リンク、静的リンクというのは、Windowsのプログラムでは、テキストボックスや、リストボックス、グリッドコントロールなど、さまざまな部品がありますよね。そのような汎用的な部品は、DDLやOCXなどの別ファイルにし、使いたいプログラムがそのプログラムを使い機能を実現します。ただ、使いたい部品がコンピュータにない場合、DLLなどもいっしょにインストールしないと機能しないわけです。これが、動的リンクです。(実際は、プログラムを実行したときに、部品を探し使用するという意味だと思ってください。)
一方、静的リンクは、使いたい部品がDLLなどの形式ではなく、ソースプログラム(実際はコンパイル済みライブラリという形式)で、ツールに付属しています。ですのでその部品の機能を使ってEXEファイルなどを作成するときは、自分で書いたコードといっしょになって、ひとつのファイルになりますので、DLLなどが不要となるのです。(ただし、EXEファイルサイズが大きくなるという欠点もありますが)そのためコピーするだけで、インストールができ、削除するだけでアンインストールができるわけです。私が名前をあげたツールは、この部品のソース(実際は静的リンクライブラリ)が付属していますので、VBではActiveXを使わなければ実現できない機能も、EXEファイル単体で実現できることになります。(もちろん、TAGOSAKU7さんの言うように、VBでも自分でその機能をコーディングすれば、EXE単体で配布することはできます。)
    • good
    • 0
この回答へのお礼

御丁寧に有難うございます。

なんとなく解かってきました。とりあえず、私の今の技術力では御二人がおっしゃっている事を100%理解する事ができない為、実践形式で学びたいと思います。

ちょうどAPIの本やActiveXの本を借りてきましたので、基礎からやっていきます。

「最初から本で調べろよ」と言われそうですが、何を調べてよいやらのレベルですので本質問に対する回答は大変役立ちました。

有難うございました。
※以下調べてみました。そういえば動的リンクってDLLの直訳ですね。

【DLL】ダイナミックリンクライブラリ・・・動的リンク
【LIB】スタティックリンクライブラリ・・・静的リンク

お礼日時:2002/01/23 13:12

オブジェクトとは、VBでいうとフォームやフォームに貼り付けるコントロール類だと思ってください。


VBでは基本的にツールボックスからテキストボックスやリストボックスを選択して、フォームに貼り付けて画面が出来上がります。

内部ではCreateWindowなどのAPI関数を使用して、それらを作成しています。
ActiveXの多くはCreateWindowでコントロール(オブジェクト)を視覚的に存在させ、マウスやキーボードなどの処理にあわせてイベントを発生させるものです。それらは一つのパッケージになっているわけです。それがランタイム内に収まっている情報というわけです。

ですので、それらを使用せずにCreateWindow関数で画面を作成し、プロセス監視という方法でマウスやキーボードなどの情報を監視し、それに合わせた処理を行うようにしたら、ランタイムは必要ありません。(しかし、ちょっと高度な技必要)

>ただ、ActiveXコントロールを使用せずにフリーウェアを作成するとなると難しくなるでしょうか?(機能制限等)
それは、作成するソフトのタイプによるので、なんとも言えません。。。

「み~くんパパの仕事部屋」(参照URLをみてください)
にサンプルがあります。

VB サンプル.クラス
└Windows コモンコントロール

をたどって、「APIを使用してリストビューを自作する」「APIを使用してツリービューを自作する」などがあります。
このHPの海外リンクには、エクスプローラのような画面を作成しているところがあって、DLL不要のオブジェクト作りにはいい勉強になります。

参考URL:http://www.mitene.or.jp/~sugisita/family/papa/vb/
    • good
    • 0
この回答へのお礼

御丁寧に有難うございます。
APIの本を借りてきましたので、あわせて勉強してみます。
本によると「用意されている1000余のAPI関数すべてがVBで使用できるわけではない」と書かれていました。まずはAPIがどこまで使えるかですね。
あまりDLL不要にこだわると高度な技術を要するような気がしてきたので、まずはActiveXを使用したソフト作成から入ってみようと思います。
有難うございました。

お礼日時:2002/01/23 12:55

>('_`)ウゥ できないとは言っておりません。

できると述べたつもりなのですが・・・
他の方の発言の内容を詳しく読まず、軽率な発言をして申し訳ありません。

ただ私のほうは、動的リンクではなく、静的リンクでコンパイル可能なツールという意味で、発言しました。

また、TAGOSAKU7さんを批判するつもりは毛頭ありませんが、質問者は
>フリーウェアの紹介で「DLL不要/アンインストールする場合はフォルダごと削除・・」
とありますので、TAGOSAKU7さんの方法は現実的ではないような気がしますが・・・

TAGOSAKU7さんの「開発ツール独自のオブジェクトを使用したら・・・」は、ある意味同感ですが、私の発言内容は、あくまで現実解で答えたつもりです。
    • good
    • 0
この回答へのお礼

私の知識と理解の無さになにかもめているような・・・
申し訳ありません。

静的/動的リンク・・・難しい言葉が出てきました。持っている限りのVBの本を調べましたがありませんでした。リンクというのはDLLやOCX等へのリンクと理解していますが、何が静的/動的なのでしょうか?TAGOSAKU7さんがサンプルで掲示したwinmm.dllは動的リンクと言うのでしょうか?

勉強不足です。有難うございました。

お礼日時:2002/01/19 14:15

>他の方も書いているとおり、VBではexe単体ソフトは作成できません。


他の方とは、おそらくぼくの事でしょうね。。。
('_`)ウゥ できないとは言っておりません。できると述べたつもりなのですが・・・

VCでもVC独自のオブジェクトを使用したら、VCのランタイムが必要です。
言っているのは、開発ツール独自のオブジェクトを使用したらダメだということです。

標準モジュールしかないプロジェクトに
Private Declare Function timeGetTime Lib "winmm.dll" () As Long
sub Main
  MsgBox Now
end sub
とした時って、ランタイム必要ですか?

オブジェクトを持たないし、MsgBox も Now もVBの関数だけど、コンパイルでマシン語になってしまうので、ランタイムを必要としないと思います。
    • good
    • 0
この回答へのお礼

上記のソースをそのままコピーしコンパイルしてみました。
そのEXEを、VBの動作環境が整えられてないPCへコピーし実行してみました。

MsgBoxとともにNow(システム日付)が表示されるではありませんか!
DOSのNETSENDコマンドを思い出してしまいました。

なる程・・・「開発ツール独自のオブジェクトを使用したらダメ」なのですね。
VBでこんな事できるとは・・・TAGOSAKU7さんが言っていたことが何となく解かってきたような気がします。

なにぶん初心者な物ですからVBで言う「独自のオブジェクト」が何か解からない自分が情けないです・・・

有難うございました。

お礼日時:2002/01/19 13:58

他の方も書いているとおり、VBではexe単体ソフトは作成できません。


他の言語では、できるものもあります。たとえばVC、Delphi、C++Builderなど・・・
そのようなものを使用するれば可能だと思います。
    • good
    • 0
この回答へのお礼

具体的な言語名指定でのご回答有難うございます。
VBではだめですか・・・残念です。
新規の言語取得に励もうと思います。

お礼日時:2002/01/19 13:32

うーん それは一概に言えませんが、何にしてもVisualという言葉の付かない言語で行っていると思います。


C(++を含む)でAPIを使用して作成しても、VBでAPIを使用して作成しても、どちらでも画面を持った開発ツールにとらわれないEXEが作成可能です。JAVAでもいいですし、なんでもOKですよ。
ただ、開発ツール独自の画面を使用したら、それ用の情報(DLL)が必要になるということです。
なのでVBやVCのコンパイラを使用してもできます。プログラムの作りの問題であって、言語の問題ではありません。

>ここまでするならVBの意味はあるのであろうか?
という意味は、VBは画面を簡単に作成できる利点があるので、その利点を生かさないのであれば必要なのだろうか。本来多くの人がCでやっていたことだなぁ。と思っての発言でした。

たぶん その発言が戸惑わせた原因だと思って、説明しておきました。
    • good
    • 0
この回答へのお礼

御丁寧に有難うございます。

>VBは画面を簡単に作成できる利点
本格的にプログラミングを始めたのがVBからなので、それがあたりまえと認識しておりました。いわゆる《オブジェクト指向型》と言うのでしょうか。(間違えてたらすみません・・・)

ん~奥が深いですね。プログラミングも。フリーソフトを作成している方のHP等からいろいろ調査してみます。有難うございました。

お礼日時:2002/01/10 23:07

基本的にコントロール類を使用すると、VB付随のDLLが必要になります。


VBのフォームが存在しているだけで、状況はコントロール類を使用しているのと一緒です。(フォームをロードすることがなくても、プロジェクトに含んでもいけません。)

回避する方法としては、フォーム(画面)を持たないEXEを作成すると、簡単にランタイム不要のEXEができあがります。
どうしても画面を持たせたいのであれば、CreateWindowなどのAPI関数を使用して画面をコードで作りこむ必要があります。(ここまでするならVBの意味はあるのであろうか?)
    • good
    • 0
この回答へのお礼

なるほど!
単体での起動にはVBはむいていないようですね。

では、フリーソフトで紹介されているDLL不要のソフト類は何で作成されているんでしょう?言語が違うんでしょうか・・・

ご回答有難うございました。

お礼日時:2002/01/10 16:01

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人はこんなQ&Aも見ています

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

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

Qランタイム

windows 7 64bitのパソコンを使用しています。
xp時代に使っていたソフトを使おうと思ったら、ランタイムがインストールされていないとなりました。
そこで、ランタイムをインストールしようと思うのですが、お勧めのランタイムを教えて下さい。

このランタイムがあれば全てOKのような、完全版のランタイムが欲しいです。

そこで、検索していたら、Visual Basic 6.0 SP6というのがありました。
windows 7 にも対応しています。Windows Vista 7 には予め主要なランタイムが同梱されていますが、それらを上書きせずに不足分だけをインストールします。
インストールによって、Windows 7 上のランタイムが変更されることはありません。

主要なランタイムが上書きされず、不足分だけをインストールし使えるというところがいいと思いました。
これを超えるランタイムはありますか?それとも、これを入れとけばいいですか?

windows 7 64bitには絶対コレ!といった全てのソフトが動かせるランタイムがあれば教えて下さいm(__)mwindows7の主要ランタイムの邪魔をしないようなランタイムがいいです。

windows 7 64bitのパソコンを使用しています。
xp時代に使っていたソフトを使おうと思ったら、ランタイムがインストールされていないとなりました。
そこで、ランタイムをインストールしようと思うのですが、お勧めのランタイムを教えて下さい。

このランタイムがあれば全てOKのような、完全版のランタイムが欲しいです。

そこで、検索していたら、Visual Basic 6.0 SP6というのがありました。
windows 7 にも対応しています。Windows Vista 7 には予め主要なランタイムが同梱されていますが、それらを上書きせ...続きを読む

Aベストアンサー

コレとか?

(windows7/vista) mscomctl.ocx登録
http://sc1.cc.kochi-u.ac.jp/~murakami/cgi-bin/FSW/fswiki.cgi?page=(windows7%2Fvista)+mscomctl.ocx%C5%D0%CF%BF

QVBのフリーウェアについて

VBをのフリーウェアがありましたら教えてください。
初心者の学習用ですので、軽いもので結構です。
必要最低限の機能のものがいいです。
抽象的な質問で申し訳ありません。
ちなみに私はNEC9821V13を使っており、
OSはWIN95です。

Aベストアンサー

Visual Basic Version 5.0 Control Creation Edition SP2 日本語版 のことですか?

フリーのVB処理系といえばこれなのですが、フリーのVBというよりは「フリーのActiveX用VB」ですから他のeditionとの違いがあります。

「単体で起動するアプリケーションが作成できない(VB5CCE上でなら動作する)」

学習用とのことですから大丈夫でしょう。

参考URLからVB5CCE SP2と各種ドキュメントがダウンロードできます。

動作環境等についてもこのダウンロードページに記載されていますのでご自分で確認してください。

参考URL:http://www.microsoft.com/japan/developer/vbasic/controls/controls.htm

QACCESSで作成したアプリケーションがACCESSランタイムで動かない?

ACCESSで作成したアプリケーションがあるのですが、顧客の要望でランタイムで運用したいと思っています。

ところが動作確認をすると、あるフォームを開く際に「実行時エラーが発生したため、このアプリケーションの実行は中断しました。
アプリケーションを続行できません。システムはシャットダウンされます。」

というダイアログを表示して、OKボタンを押すとアプリケーションが落ちてしまいます。

ランタイムではないACCESSでは問題なく動作するのですが、ランタイムでは何が違うのかわかりません。

動作環境
OS:WindowsXP
ACCESSランタイムは2003と2000 SR-1、ランタイムでないACCESSでも2003と2000 SR-1を試していますが、いずれの場合でもランタイムで上記の症状が発生し、ランタイムでない場合は発生しません。
Microsoft Jetは4.0にしてあります。

断片的なヒントでも結構です。また参考になるサイトでも結構ですのでご教示をお願いいたします。

Aベストアンサー

Accessの内部エラーが発生しているのですぐ落ちてしまう。
ランタイム条件によってフォームが実行される時に有効なコードが誤っているとか。(フォーム中のコードが削除したテーブルを開こうとしている。実行時のコードで誤ったロジックが含まれる。みたいな誤り)
エラーがコード内で発生しているがエラー処理を実装していないので落ちてしまうとか。

QVB6.0で作成したexeファイルが他のPCではエラーが発生して動きません

はじめまして。
色々検索してみたのですが、なかなか見つからなかったのでお力を貸していただければと思います。

仕事でVB6.0でつくられたプログラムがあります。
最初は別の方(仮にAさんとします)が作ってくださり、いつもそのexeファイルをもらって仕事をしておりました。
この度、私がそのプログラムを修正し、exeファイルを作成したところ、自分のPCでは問題なく動くのですが、他のPCで使用しようとするとエラーが発生して動きません。

プログラムはVB6.0で、指定したエクセルファイルを開いて参照し、データと照合させるものです。

AさんのPCのOSはwinXPです。
Aさんが作ってくれたexeファイルはコピーして、Win95/Win98/WinXPで問題なく動作することが出来ました。
しかし私が修正し、作成したexeファイルはOSは関係なく自分のPC以外ではエラーが発生してしまいます。ちなみに自分のPCもWinXPです。
エラーは「不正な処理をしている為、このプログラムを終了します」という様なものです。
エクセルを参照しようとすると、発生するエラーなので、そのときだとは思うのですが、デバックしようにも、自分のPCでは問題なく動いてしまうので、どうにも出来ません。

よろしくお願い申し上げます。

はじめまして。
色々検索してみたのですが、なかなか見つからなかったのでお力を貸していただければと思います。

仕事でVB6.0でつくられたプログラムがあります。
最初は別の方(仮にAさんとします)が作ってくださり、いつもそのexeファイルをもらって仕事をしておりました。
この度、私がそのプログラムを修正し、exeファイルを作成したところ、自分のPCでは問題なく動くのですが、他のPCで使用しようとするとエラーが発生して動きません。

プログラムはVB6.0で、指定したエクセルファイルを開い...続きを読む

Aベストアンサー

原因は 事前(アーリー)バインディングつまり参照設定をしているためです
yuzumiya氏のパソコンにはExcel2003、ターゲットパソコンにはExcel2000 ということですね

VBのアプリはExcel2003を探しているが見つからないので落ちてしまうのです

As Objectになおして EXcel2003への参照設定も外して EXEを作成してください

QAccess2003でランタイム化

Access2003でランタイム化
目的としまして、Access2003で作成したツールをランタイム化してAccess2003がインストールされていない複数の端末で動作させることです。

ネットで調べたところ、Access2007では無料でランタイム化できるみたいですけど
(1)Access2003は、(2)Microsoft Visual Studio Tools for the micosoft Office Systemに同封している(3)Access 2003 Developer Extensionsが必要だとわかりました。
実際に(1)と(2)のソフト+念のためVisual Studio2005をインストールして環境は整いました。

ただ実際にどうランタイム化して配布したらいいのか、(2)のソフトの起動方法、(3)の使い方とわからないことだらけです。
検索してると、Package Wizard の単語とかよく出ますけど理解できていません。

ランタイム配布手順について実際経験した方、詳しい方ご教示お願い致します。

Aベストアンサー

ここのランタイムは昔から有名です。

http://e-server.mydns.jp/server/modules/mydownloads/topten.php?hit=1

以下は、私もあまり経験が少ないので、正確な情報とは言えません。
>ソフト+念のためVisual Studio2005をインストールして環境は整いました。
できないのではないでしょうか。VS2008のProfessional版ならともかく、2005はないような気がします。それは、VSTO2005の間違いかもしれませんね。

>(2)Microsoft Visual Studio Tools for the micosoft Office System

VSTOは、調べてみるとまだ手に入るようですね。Package Wizard というのは、MS Access Developer Extentions にあるものですが、あえて必要ということもないと思います。インストーラーがあれば、何でもよいと思います。


たぶん、ご覧になっているとは思いますが、
参考URL:Access 2003 ランタイムを入手して展開する

参考URL:http://office.microsoft.com/ja-jp/access-help/HA001120886.aspx

ここのランタイムは昔から有名です。

http://e-server.mydns.jp/server/modules/mydownloads/topten.php?hit=1

以下は、私もあまり経験が少ないので、正確な情報とは言えません。
>ソフト+念のためVisual Studio2005をインストールして環境は整いました。
できないのではないでしょうか。VS2008のProfessional版ならともかく、2005はないような気がします。それは、VSTO2005の間違いかもしれませんね。

>(2)Microsoft Visual Studio Tools for the micosoft Office System

VSTOは、調べてみるとまだ手に入る...続きを読む

QExcelのファイル{(75行*1列の1セット)*33セット分}データをVBで扱う方法を教えてください。

Excelのファイル{(75行*1列の1セット)*33セット分}データをVBで扱う方法を教えてください。

ExcelのデータをVBに読み込んで、それを並び替えするプログラムを作ろうとしています。
なのですが、ExcelのデータをVBに読み込む方法がわかりません。
ネットで調べたらopen,close,get・・とあるのですが、いまいちわかりません。

どなたか教えてください。

Aベストアンサー

Open/Close では実質的に言って無理です。
( Excel のファイル構造がわかればできるかもしれませんが・・・)
VB6 と VB.NET では少し記述方法が違いますが、VB.NET だと

Dim eb As Object
Dim es As Object
Dim strFileName As String

strFileName = "C:\Temp\Book1.xls"
eb = GetObject(strFileName)
es = eb.Sheets(1)
MessageBox.Show(es.Cells(2, 1).value, "Test", MessageBoxButtons.OK, MessageBoxIcon.Information)
eb = Nothing

のような感じで Excel のような感じで内容を読むことができます。
(上の例では 1番目のシートの A列 2行目のセルの内容をメッセージボックスに表示します。)
並び替えですが、Excel 上で並び替えをすることも可能ですが、
読み込んでから並び替えをするなら、
VB6の場合:並び替え関数を自作(並び替えのアルゴリズムはクイックソートやヒープソートなどいろいろありますので、検索して調べてみてください。どこかに VB のサンプルがあるかも。)
VB.NETの場合:Array.Sort が使用可能です。

Open/Close では実質的に言って無理です。
( Excel のファイル構造がわかればできるかもしれませんが・・・)
VB6 と VB.NET では少し記述方法が違いますが、VB.NET だと

Dim eb As Object
Dim es As Object
Dim strFileName As String

strFileName = "C:\Temp\Book1.xls"
eb = GetObject(strFileName)
es = eb.Sheets(1)
MessageBox.Show(es.Cells(2, 1).value, "Test", MessageBoxButtons.OK, MessageBoxIcon.Information)
eb ...続きを読む

Qアクセス2007ランタイム

アクセス2007ランタイム

作成されたデータベースがランタイム上で動いているのか、アクセス2007本体で動いているのかを識別する方法を教えてください。

バージョンを調べるとどちらも12.0です。
何か方法はないでしょうか?

Aベストアンサー

No.1の方が示された参考URLでの質問者の方の要望は

 「Accessのランタイムが既にインストールされているか」

なので厄介なことになっていますが、今回ご質問の

 「作成されたデータベースがランタイム上で動いているのか、
 アクセス2007本体で動いているのか」

であれば、その「作成したデータベース」の適当な場所から、
以下のようなコードを実行してやれば、確認できます:

'データベース起動時に自動で開くようにしているフォーム
'の「開くとき」イベントで、MsgBoxで表示する例
Private Sub Form_Open(Cancel As Integer)

  Dim IsRuntime As Boolean

  'SysCmdでランタイムかどうかを確認
  '(上述URL内で、みるくさんもこのコマンドを提示されています)
  IsRuntime = SysCmd(acSysCmdRuntime)

  '確認結果をMsgBoxで表示
  MsgBox IIF(IsRuntime, "ランタイム","アクセス本体") & "から起動"

End Sub

なお、Accessには「ランタイムモードで起動するコマンドライン
オプション」がありますので、これを使用して「Access本体の
ランタイムモードで起動」した場合は、「ランタイム」扱いになります。
(というか、Accessインストール済みの端末しか手元にないため、
 動作確認はこのランタイムモードで行いました(汗))

No.1の方が示された参考URLでの質問者の方の要望は

 「Accessのランタイムが既にインストールされているか」

なので厄介なことになっていますが、今回ご質問の

 「作成されたデータベースがランタイム上で動いているのか、
 アクセス2007本体で動いているのか」

であれば、その「作成したデータベース」の適当な場所から、
以下のようなコードを実行してやれば、確認できます:

'データベース起動時に自動で開くようにしているフォーム
'の「開くとき」イベントで、MsgBoxで表示する例
Private Sub Form_O...続きを読む

QVB6とVB.NETでは同じフォントでも違う文字になる?

VB6とVB.NETでは同じフォントでも違う文字になる?

VB.NETで文字を印刷しているのですが、VB6で印刷したものと、VB.NETで印刷したものは
同じフォントを指定しているのに、明らかに文字が違います。
このようなことはあるのでしょうか。

あるいはロジックに問題があるのでしょうか。

VB6

Printer.FontName = "MS ゴシック"
Printer.CurrentY = YY
Printer.CurrentX = XX
Printer.FontSize = 10
Printer.Print(TITLE)

VB.NET
Dim PrtFont1 As New Font("MS ゴジック", 10)
e.Graphics.DrawString(TITLE, PrtFont1, Brushes.Black, XX,YY)

Windows XP
VisualBasic 6.0, Visualbasic2010 Express

VB6とVB.NETでは同じフォントでも違う文字になる?

VB.NETで文字を印刷しているのですが、VB6で印刷したものと、VB.NETで印刷したものは
同じフォントを指定しているのに、明らかに文字が違います。
このようなことはあるのでしょうか。

あるいはロジックに問題があるのでしょうか。

VB6

Printer.FontName = "MS ゴシック"
Printer.CurrentY = YY
Printer.CurrentX = XX
Printer.FontSize = 10
Printer.Print(TITLE)

VB.NET
Dim ...続きを読む

Aベストアンサー

ツッこむわけではありませんが、その点をご了承の上で。

見間違えでなければ
VB.NETのほうは「ご『じ』っく」と2番目の文字が濁点付じゃないでしょうか?

正しいフォント名称が指定されなければ代替フォントでの出力となります。

Qランタイムとは?

あるオンラインソフトをサイト「ベクター」からダウンロードしようとしたところ、
「動作に必要なソフト VB6.0 SP5 ランタイム」と表示されていましたが、ランタイムが何かわからず、そのままダウンロードしましたが、開けませんでした。このソフトはどういうものでしょうか?またフリーソフトでも提供されているのでしょうか?

Aベストアンサー

Visual Basic というプログラム言語で書かれたものです。
この言語の場合、いくつかの機能は別の部品を使うようになっています。
そのための部品がランタイムです。

ベクターにもランタイムが登録されているので、基本的なものをDLして見てください。
もしくは、ランタイム同紺版を用意している作者もいるので、そちらのファイルがあればDLして使ってください。

「VB6 SP5 ランタイム」で検索すれば幾つも出てきます。

QVB6.0の「vbFromUnicode」はVB.NETではどれに相当しますか?

VB6.0で、例:StrConv(Text, vbFromUnicode)とかで使用する、
「vbFromUnicode」(文字列を Unicode からシステムの既定のコードページに変換する)
は、VB.NETでは使用できないようです。(相当する定数はない?)

「vbFromUnicode」と同等の機能を、VB.NETで使用したいのですが、
どうすれば良いでしょうか?

Aベストアンサー

思いっきり、例文に「COM1」と書いてますが、USBに書き換えてくださいね^^;

それとふと思ったのですが
udtReaderWriterModeWithoutEncryption
変数は構造体ですよね?

メンバが
lngPortName
lngBardRate
というのは、型宣言をINTEGERに変換してますよね?

ちょっとばかり不安に思ったので、追記しておきました。

参考URL:http://okweb.jp/kotaeru.php3?q=1257613


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング