古代VBプログラマ質問スレ(Ver.6.0 まで) part65 [転載禁止]©2ch.net
ここは古代に使われていたVisual Basic 〜6.0 の質問スレです。 質問者は使用しているOS、VBのバージョン、サービスパックのバージョン、 「何がしたくて、どうしたけど、どう困っているのか」を明確に書きましょう。 VB.NETは別物なので専門スレで、VBA、APIの質問もそれぞれのスレで。 ○ 質問者の心得 一.質問する前にMSDNやGoogle、過去ログにも目を通してみる。 二.VBScript、インストーラーなどはこのスレでOK。 三.質問は第三者にもわかりやすいよう簡潔かつ具体的に。 四.荒らしは相手しない。 ○ 回答者の心得 一.答えられない質問は無駄に罵倒せずスルー。無理するな。 二.代用法を強制しない。 三.回答する上で必須ではない情報をむやみに聞き返さない。 四.荒らしは相手しない。 五.VB情報募集中。 六.回答は質問者が理解できるよう具体的に。 MSDN Online Japan ホーム http://www.microsoft.com/japan/msdn/default.asp Visual Studio 6.0 Service Pack 6 http://msdn.microsoft.com/vstudio/downloads/updates/sp/vs6/sp6/default.aspx Google http://www.google.co.jp/ 前スレ VBプログラマ質問スレ(Ver.6.0 まで) part64 http://peace.2ch.net/test/read.cgi/tech/1393069842/ ※「まず自分で調べる」クセを身につけよう。 なんでWin11って日本語不自由なん? ローカライズは日本語の話せるアジアンが担当して、生粋の日本人は参加してないん? >>731 >>エクセルVBA 無くならないだろうね VBA案件も多い 15年位前からMSIMEの開発は中国に移ってるそうです 当時から精度劣化とか言われてた >>732 22H2の日本語表示はかなり中途半端になってたよ 配信開始したの知らないで、昨年末の21H2だと思ってダウンロードしたんだけど 隣り合ったメニューなのにterminalとターミナル(管理者)とか、インストーラが英語のままだったり 前のバージョンでできてたとこが間違ってた Windowsがオープンソース品質に近くなってきたな・・・ 本当にWindowsは酷い酷いってWindows板に書きまくったら 「他所でやってください」の規制がされてしまった 一例を挙げるなら、ファイルをコピーしようとして 「上書きしていいですか」のダイアログの意味不明さも酷いが それをキャンセルしたら無処理で戻るはずが、プログレスバーがスルスルと伸びるんだよ これ怖いよ、上書きしちゃったか確認が必要だ 漢字変換も使い込んだら30年前の、候補が頻度順で並んでる方が速いよ もうあちこちメチャクチャ macOS や iOS でディレクトリというかフォルダのコピーするとき 同名のフォルダがあったら内容マージされるもんだと思って 確認ダイアログでOK押したら元々のフォルダの中身が消されたのは良い思い出 VB6のシステムをVB.netで書き直す作業をプログラムわからない人に説明したい場合、 どういう例えだせばわかりやすいかな・・・・? VB6とVB.netは名前に同じVBとついていますが、 別の言語です。翻訳の多大な労力が発生します。 日本語から中国語に翻訳する作業を同じ漢字を使う 文化なんだから簡単でしょと言っているようなものです。 とか? 中途半端に知識のある客 「でもVB6で書いてるものをVB.netに自動で変換 出来るって聞いたよ?」 COM、OCXを置き換えたり、 コントロール配列が使われているばあいの置き換え VB6からVB.net2008、Visual Studioへの 2段階アップグレード等をどう説明したらいいんだ。 orz >>741 日本語と中国語の漢字で似て非なるものの説明いいかもしれないですね ありがとうございます 開発期間すごく甘く見積もりされていて辛かったので これで少しでも伸ばせたらいいなぁ・・・ >>741 中途半端に知識のある人には、自動変換ではCOM、OCXといった共通で使われる古い部品はそのままだから、新しい部品に置き換えないとVB6からVB.netに書き換えても今後動作しなくなる可能性が高く、.NETの部品は規格が違うから書き換え作業が増えますよと伝えていた でも実際は、.NET Frameworkのサポート期間の方が短くて、初期のバージョンに移行した方が先に寿命を迎えた コントロール配列の問題はCOM、OCX問題が無ければ、そのままでも機能するから書き換えてないのも見かけるよ セキュリティ面では改善されたのかもしれないけど、VB6からVB.netへの書き換えって、本当に必要だったのかな、新しい機能を使うためには.NET Frameworkへ移行した方が良かったものもあるけど、VB.netの開発は終了されて今後新しい機能が追加されないみたいだから、移植時に新しい機能が必要なかった場合は意味が無かったと思う COM、OCXがそのままでVB.net化されたのなんか、全く移植した意味が無かったと思う >>740 最近のVB.net移植案件の目的ってなんなんでしょか? うちの会社は最近のはC#へ移植してるよ 言語は併用できるから古いコードはVB.netへ移植して、新しい部分はC#でも良いけど、VB知らない人にはVB使う意味って無いよね ところでVB.net化して、VB6名前空間がそのまま残ってるコードをどう思います? >>743 >最近のVB.net移植案件の目的ってなんなんでしょか? 私のケースの場合は、単に担当する私の経験がC#よりVB経験があったためと 依頼側はVB6とVBって似てるからいけるんじゃない?っていう認識のもとでの依頼でしたね ここ数年C#触れてなかったけど、今の主流は次世代とかのこと考えるとC#のほうがいいのかなぁ VB6からの移植はIEみたいに いつMSが切るか分からんのと 保守のVB6エンジニアの確保が難しいからじゃないの? >>743 VB6はランタイムはサポートされていても開発環境はすでにサポートされてないはずだが .NETはサポート切れたら寿命なのに、VB6はサポート切れても寿命じゃないと? >>746 1.VB.NETは、新しい機能追加が終わったから、もしVB6の機能で良いというならVB6で良い 2.VB.NETでできることはC#でもできるから、どうせ移植するなら機能追加のあるC#の方が有利 3.実行環境については、VB6のサポートは続いてるけど、.NETはバージョンによっては終了 たとえば、NETFramework4.0は開発環境(VS2010)のサポートが終了されちゃったし、置き換えられて4.0実行環境もサポート終了された 開発環境のサポートが終了されたのを妥協するとしても、4.0で開発したなら最終バージョンの4.8の動作確認が必要になるけど、VS2010しか持ってないと対応できない うちの職場は社内設備用の開発なんで、新しい開発環境が買ってもらえない MS以外のメーカーから提供されるライブラリが高価で初期導入の時にしか買っていないのも問題なんだけどね うちの職場ではWin11については現在確認中だけど、万一のためにVB6用にXpは仮想化してあるし、Win10までVB6の開発環境は現役で使えてる VB.NETはMSのサポートが必要で、どうしてもVBが使いたい時だけの選択肢でしかない、それなら付加機能のあるC#に移行するよねって話で新しいものはC#に移行しているよ VB6のIDE環境だけどWIN11で普通に使えてるよ。 ランタイムとか自分で入れ直さないといけないけど。 旧VBはXPの仮想マシンで動かしてるわ まるごとコピーすれば5分で準備できる それって、Win10上で、バーチャルXPを動かしてるってこと? XPマシンがあるならVBの開発環境構築にバーチャルPCは不要だものね Win10上でVBPを起動すると、レジストリの登録がなんたら〜とメッセージが出て それはもう一度やれば正常にプロジェクトがロードされたのだけど 昨日は10回近くリトライしてもダメで ダメなときはダメという感じになってきた 何かが不安定で、ネットで調べたら管理者権限で立ち上げるとかあって 今調べている最中だけど なんか古代VBに対する配慮がなくなっているのではないかと不安 バーチャルXPが作れるなら、それも考えておかないといけないかも >>750 VB6 IDEをWin10以降で動かすネット記事は 初回起動時のみ管理者権限で起動って書いてるトコ多いけど レジストリの読み書きするプログラム作る場合は 常に管理者権限で起動するようにしないと 書き込みエラーで怒られるよ。 >>750 うちはHyper-V使ってるよ Xp用の統合環境用ドライバがServer2012R2くらいまでしか対応してなかったから、Server2012R2から持ってきた 多分Win8.1くらいまでは対応してたんだろうけど、Win10以降はWindowsUpdateでドライバ取得するようになって、Xp未対応なんだよね Xpについては、XpモードのVHDをそのまま使ってるのもある なぜかアクティベーションできたPCとできなかったPCがあって、仕方ないから新規に入れた環境もあるよ Hyper-VはWin98やMeは対応できないみたいなんだけど、他社の仮想環境なら使えるのかな VirtualPCやVirtualServerなら実行できるのにね VB6もそうだけど、F-BASICの環境構築にXpは役立ってる Xpより後のOSでは、デバッグができなかった F-BASICはXpすら未対応ってことになってるけど、Xpなら動かすことができた VB6→C#への移行案件が地元で有るけど 募集かけても人が来ないのかずっと募集中 よほどVB6からの移行は皆嫌ってるって事か 単純に古代VB言語を使いこなす現役が少なくなっているんじゃないの? なんでC#にする必要があるのか聞いてみれば たぶん、例えばTreeViewとかの非標準のコントロールを使っているから 起動すらしないということなんでしょ そのコントロール相当のものを自作すれば済む話なんじゃないの 自作コントロールを作っておけば、そういう案件全部食えるのでは 例えばポップアップメニューの項目の中で、使えない項目は Enabled=Falseにすると、エンボス表示になって、これは使えない項目だと瞬時に分かったのに 今時のWindowsはタブレット対応のためか、滲んだフォントを使うので、エンボス表示が使えない そこで文字色を灰色にしたり、背景色を変えたりの統一されていない仕様になって非常に分かりにくい それはほんの一例だが、Windows開発の先人たちが改良を重ねて使いやすくしてきたものを 全否定する今時のWindowsは、GUIが子供が作ったようにバカげたものになっている コントロールパネル関係なんか悲惨すぎる 場当たり的な思いつきの仕様が使われて、もう末期的だろう 開発チームを統括してる奴がいないようだ しかしXP時代のよきGUIがVBランタイムとして残されていくのは救いだな 今やWindowsの売上はMS全体の売上の2〜3割しかないからあまり工数を割けないんだろうねぇ >>758 今のWindowsって今までに蓄積したものをぶっ壊した挙句、 UIが中途半端なキメラ状態になってしまってるんだよな もう、モバイル完敗なんだから、サッサと諦めて 今までのデスクトップ路線に戻してほしいわ XPが完成形だよな。それ以降は劣化だよ。 進数計算とか空で出来ない雑魚文系なので、XPの関数電卓は未だに重宝する。 今のWindowsの電卓は最低だわ フリーソフト以下だ たぶん新人の勉強のために作らせたんだろうが あんなものをよく上司がOK出すなと思う アンドロイドスマホの電卓はセンス良い さすがGoogle >>757 かも知れないね、、 まあ.NET Coreとか視野に有るならVB.NETよりC#にしとく方が良いからね 古いプログラムは余り手を付けずに延命できるならそれに越したことはない 表面化してこなかったバグを掘り起こしてしまいかねない C#に移行なんて話は、どうせ元のソースの全てを理解してやろうとは思ってないだろ 「Internet Explorer 11」は2023年2月の パッチで完全無効化 ~Microsoftがアナウンス/ そろそろクラシックVBも引導渡されるかな。 そもそもプロプライエタリな開発ソフトなんて時代遅れだからっ! これからはフリーなg++またはclang++やろ? もちろんGUIはwxWidgetsッ! Qt?・・・もう知らん AmazonのKindle for PCがQtのようだ edgeをdom操作出来るようになるまではie消すなよ。 VB6の様な実行即起動のP-CODEライクな開発環境はもう出ないのでしょうか? VBだけで出来ることなら簡単だけど、 OSの機能にアクセスしようとすると急に難しくなる VBAにはコントロール配列が無かったから複数の同じコントロールを 操作するのが面倒だった気がする VBってトライ&エラーがやりやすいから やっつけ的な糞コードができやすいというのはあるかも・・・ 難しいかどうかを気にするのって やらない言い訳を探しているように見えるな vbもvbaどちら様も難しいございますわよ。 だってプログラミングなんだもん。 Picture1をコンテナとして、複数のImageコントロールが乗っています そのイメージを Clipboard.Clear Clipboard.SetData Picture1.Picture か Picture1.Image でクリップボードに入らないかと思ったらImageは無視されてしまいます Picture1に直接描かずに、Imageを乗せるのは、 Imageはドラッグで動かすものだからです ウインドウ丸ごとキャプチャは、Picture1がウインドウより大きくて スクロールしながら見るものだからダメです 全Image を BitBild でPicture1にコピーしてから Clipboard.SetData するしかないでしょうか >>781 Picture1のAutoRdrawをTrueにしてもダメでしょうか? >>781 これでどうでしょうか? フォーム上に Picture1 と Command1 を置きました。 Picture1 上には任意の Image を置いてください。 ※ Picture1 の ScaleMode プロパティは、「3 - ピクセル」に設定してください。 Option Explicit Private Declare Function CreateCompatibleDC Lib "gdi32" (ByVal hDC As Long) As Long Private Declare Function CreateCompatibleBitmap Lib "gdi32" (ByVal hDC As Long, ByVal nWidth As Long, ByVal nHeight As Long) As Long Private Declare Function SelectObject Lib "gdi32" (ByVal hDC As Long, ByVal hObject As Long) As Long Private Declare Function DeleteDC Lib "gdi32" (ByVal hDC As Long) As Long Private Const SRCCOPY = &HCC0020 Private Declare Function BitBlt Lib "gdi32" (ByVal hDestDC As Long, ByVal X As Long, ByVal Y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal dwRop As Long) As Long Private Const CF_BITMAP As Long = 2 Private Declare Function OpenClipboard Lib "user32" (ByVal hWnd As Long) As Long Private Declare Function EmptyClipboard Lib "user32" () As Long Private Declare Function CloseClipboard Lib "user32" () As Long Private Declare Function SetClipboardData Lib "user32" (ByVal uFormat As Long, ByVal hData As Long) As Long Private Sub Command1_Click() Dim hDC As Long Dim hBitmap As Long Dim hBitmapOld As Long hDC = CreateCompatibleDC(Picture1.hDC) hBitmap = CreateCompatibleBitmap(Picture1.hDC, Picture1.ScaleWidth, Picture1.ScaleHeight) hBitmapOld = SelectObject(hDC, hBitmap) BitBlt hDC, 0, 0, Picture1.ScaleWidth, Picture1.ScaleHeight, Picture1.hDC, 0, 0, SRCCOPY If OpenClipboard(Me.hWnd) Then If (EmptyClipboard()) Then SetClipboardData CF_BITMAP, hBitmap End If CloseClipboard End If SelectObject hDC, hBitmapOld 'DeleteObject hBitmap DeleteDC hDC End Sub 全 Image を Picture1 に BitBlt する必要な無いみたいです。 VB6 の Clipboard オブジェクトを使用する場合は、StdPicture にする必要があるみたいですが、 hBitmap を StdPicture に変換するより Clipboard API を使用して hBitmap を渡す方が簡単だと思ったので この様にしました。 ありがとうございます ありがとうございます ありがとうございます できました! 複数のImageは透過Gifでして、重なり合っているので ImageはたぶんBitbldできないから、一旦ワーク用のPictureBoxにコピーして それをZオーダーの下層から順にPicture1にBitbldするのに EnumWindowsとGetNextWindowを調べているところでした でもPicture1はウインドウより大きいので やはり見えない部分は内部では保持していないのでしょうね そこはコードから少しずつスクロールしながらキャプって繋ぎ合わせようと思います 私の趣味に付き合って頂いた善意あるあなた様のご健康を願っていますので一言 「ワクチンは絶対に打ってはなりません」 これから世界は大混乱の終末の様相となり大勢の人々が無くなります もし自由な時間がおありでしたら海外情報を紹介しているサイトをご覧になることをお勧めします オレはワクチン打つたびに副作用が強くなっていったから3回で止めたわ 人によっては1回目で強烈な副作用に襲われたらしいが・・・ マイクロソフトもWindowsアプリケーションの開発手段のひとつを提供しただけで、VB6.0はもともと本流ではない。 それなのに予想以上に人気が出てしまって(ソフトに掛けるお金や時間もなく) 切るに切れずに今に至るのでした 簡易的なものはDelphiに任せてどんと構えていれば良かったのかもしれないな でもVB4〜6の出来は素晴らしい Windows本体やエクセルなんかより頑張ったと思う 文句の付け所がほとんど無い 思うに、MSはある時点で突然スタッフが劣化し その前に終了したVBは良く見えると ホントかウソか分からんが実は日本人が裏で頑張ってた説もあるんだよな ある日突然日本人に触らせなくなってから劣化して逝ったとか・・・ 日本人はソフト開発向かないと言われているが 一部には特別優秀な人が居るんだなぁ MSIMEがうんこになったのは開発拠点を中国に移したせいだと聞いたな 日本から富士通やらNECやらがWindows開発部隊をMSに送り込んでいたのは事実 当時FM-TOWNSを持っていて、富士通系のパソコン雑誌でそういう記事が紹介されてた てっきりWindowsの日本語化、2バイト文字対応をしてるのかと思ってたが Windowsの核の部分から日本人技術者が担当してたと後から聞いた すると松下が加勢した日本のOSであるTRONと、Windowsの戦いは ある意味日本人同士の戦いだったのかも知れんね 戦いというほどではなかったのかも知れないが ゲイツや孫一味によるJAL123便撃墜で終止符が打たれたから アメリカの方では完全に戦いになってた アメリカはスーパー301条を発動したからね ペンタゴンまでTRONには国防上の大問題だとイキってたし 日本人は本当に優秀だよ JAL撃墜のときの中曽根、そして小泉・竹中による日本潰しが始まった こいつら日本人じゃないんだ 海外の調査でも、日本をトップに、香港など東アジア勢が知能指数が高いことが判っている 8ビットCPUの、ザイログZ80やインテル8080は日本人の嶋さんの設計で 嶋さんはインテルに引き抜かれた カナダで製造された世界初の量子コンピューターの原理は日本人の発案 人工知能でブレイクスルーとなったディープ・ラーニングも日本人の発案 しかし日本には白人の言う通りに動く、いわば日本人の足かせとなっている民族がいる 政治家なんか全員そうだ そしてWindows安全神話が始まった (実際は、アメリカに情報抜かれまくってたりして ビルド実行してもエラーもおきずEXEも吐き出されないのはどうやって原因追及すれば 突然VB6やることになってやばいです VB6の寿命半端ねぇっす どうせならWindowsと共に生涯現役で・・・ 同じ機能、同じ性能のアプリを作れるなら 簡単に早く作れる方がいいに決まっているからね Windows10上のVBアプリで テキストボックスに入力していると そのうち漢字入力ができなくなる問題が放置されている もう修正する気は無いのだろう たぶんWindows11上でも同じなんでしょ? VBアプリを再起動すれば復活するのだけど 何かコードを書いて、漢字モードのリセット的なことはできないでしょうか つまり、漢字入力できなくなったら、 それ用のコードを仕込んだボタンをポチッと押すだけで 再び漢字入力できるような・・・ VB6.0なんてマイクロソフトがもう捨てろと言っているのにな マイクロソフトのライバルはマイクロソフトなのである! つまり、VB6の様な手軽に開発出来るソフトを作ってしまったのがいけなかったんや VBが無ければみんな泣きながらVC++使ってたろうから、多分.NETが救世主に見えたんじゃね? >>806 C++も無かった時代を知らないにわかですか? read.cgi ver 07.5.5 2024/06/08 Walang Kapalit ★ | Donguri System Team 5ちゃんねる