恥晒し - 2010

カスがググったら、こうなった…的な。
カテゴリ
ググルヒト
恥晒し/一覧 (10)



2010年10月
         
           

新着エントリ
Outlook Express 6 でエラー 0x800c0133 (6/6)
EXCEL 自Bookを複製するマクロ (4/19)
EXCEL 勝手にセルの色が塗られる (3/13)
SQL Serverからのメッセージが消えない (12/3)
日本語変換が思い通りにいかない (4/23)
VB コンソールへの文字列復帰 (10/28)
タスクからのバッチファイル(*.BAT)実行結果が0x4 (10/5)
VB 標準モジュールが開かない (9/29)
EeePcの無線LANがつながらない (9/28)
EXCELエクセルVBAでエラー400 (9/23)

新着トラックバック/コメント


アーカイブ
2010年 (5)
9月 (3)
10月 (2)
2011年 (2)
4月 (1)
12月 (1)
2012年 (3)
3月 (1)
4月 (1)
6月 (1)


アクセスカウンタ
今日:26
昨日:33
累計:105,343


RSS/Powered by 「のブログ

[PR]



2010年10月28日(Thu)▲ページの先頭へ
VB コンソールへの文字列復帰

Q:コマンドプロンプト(コンソール)から
  VB6のEXEを実行して、その結果を
  コマンドプロンプト(コンソール)上に返したい。

A:VB6の標準機能では
  コマンドプロンプトへの出力はできません。

Q:でも、何とかしたいんだYo!!


=====================

...ということで自分で調べた結果。



何てことは無い。
ただ「簡単には出来ねーよ」というだけじゃないか!
Win32Apiを使えば出来そうじゃね!?

この辺り↓のAPIをググルと事例もいっぱい出てくるし。

・AllocConsole
・FreeConsole
・WriteConsole
・ReadConsole




で、作成したのが大雑把にまとめると、こんな感じのソース。

 → Call WriteConsole(Hnd,"★表示したい文字列★",文字長)

    (かなり大雑把だが...)




さっそくコンパイル。



ぉ、一発で通った。 俺、すごい。




実行してみる
┌───
│C:\>TEST.exe

│C:\>

└───


  ・・・


  何も起きない。


  ・・・


  何も出ない。







出ないじゃん!何で!












仕方ない、またググる。



どうやらリンカの「SUBSYSTEM」オプションを
「console」にしなければならないらしい。





・・・って?

リンカって何? SUBSYSTEMオプションって何?




どこを、どう変えればいいんだ?


VBエディタのプロパティを見たが、そんなの無いし

EXEを実行するときに、何か付ければイイのか?

┌───
│C:\>TEST.exe /SUBSYSTEM=console

│C:\>

└───

何も起きない...


ま、そうだろうな...













仕事の合間を見つつ、調べ続けること約6時間...



なんだろうなぁ


実行ファイル作成時のオプションをいじってみたり...


プロジェクトのプロパティをいじってみたり...


試行錯誤するも結局分からないまま。





途方に暮れて、訳もなくVBがインストールされている
フォルダなどを眺めてみる...


ぉ、VBフォルダの中に「LINK.EXE」というのを発見。



リンク? リンカ?


これ... 何だ?







ちょっと実験で、コマンドを発行  link /?



┌─────────────────────────────────
│C:\>link /?

│Microsoft (R) Incremental Linker Version 6.00.8168
│Copyright (C) Microsoft Corp 1992-1998. All rights reserved.

│usage: LINK [options] [files] [@commandfile]

│ options:

│ /ALIGN:#
│ /BASE:{address|@filename,key}
│ /COMMENT:comment
│ /DEBUG
│ /DEBUGTYPE:{CV|COFF}
│ /DEF:filename
│ /DEFAULTLIB:library
│ /DELAY:{NOBIND|UNLOAD}
│ /DELAYLOAD:dll
│ /DLL
│ /DRIVER[:{UPONLY|WDM}]
│ /ENTRY:symbol
│ /EXETYPE:DYNAMIC
│ /EXPORT:symbol
│ /FIXED[:NO]
│ /FORCE[:{MULTIPLE|UNRESOLVED}]
│ /GPSIZE:#
│ /HEAP:reserve[,commit]
│ /IMPLIB:filename
│ /INCLUDE:symbol
│ /INCREMENTAL:{YES|NO}
│ /LARGEADDRESSAWARE[:NO]
│ /LIBPATH:dir
│ /LINK50COMPAT
│ /MACHINE:{ALPHA|ARM|IX86|MIPS|MIPS16|MIPSR41XX|PPC|SH3|SH4}
│ /MAP[:filename]
│ /MAPINFO:{EXPORTS|FIXUPS|LINES}
│ /MERGE:from=to
│ /NODEFAULTLIB[:library]
│ /NOENTRY
│ /NOLOGO
│ /OPT:{ICF[,iterations]|NOICF|NOREF|NOWIN98|REF|WIN98}
│ /ORDER:@filename
│ /OUT:filename
│ /PDB:{filename|NONE}
│ /PDBTYPE:{CON[SOLIDATE]|SEPT[YPES]}
│ /PROFILE
│ /RELEASE
│ /SECTION:name,[E][R][W][S][D][K][L][P][X]
│ /STACK:reserve[,commit]
│ /STUB:filename
│ /SUBSYSTEM:{NATIVE|WINDOWS|CONSOLE|WINDOWSCE|POSIX}[,#[.##]]
│ /SWAPRUN:{CD|NET}
│ /VERBOSE[:LIB]
│ /VERSION:#[.#]
│ /VXD
│ /WARN[:warninglevel]
│ /WINDOWSCE:{CONVERT|EMULATION}
│ /WS:AGGRESSIVE

└─────────────────────────────────



ぉぉ、それっぽいのあるじゃん!

「/SUBSYSTEM:{NATIVE|WINDOWS|CONSOLE|WINDOWSCE|POSIX}[,#[.##]]」

これ、これ!っぽい。



リンカってのは、コンパイラみたいなものなのか?

ようは、コンパイラみたいなのを作らなきゃならんのか?





もう一度ググる

キーワードは「VB LINK 使用方法 SUBSYSTEM:CONSOLE」




あった!! 発見!



リンカのオプション変更って
作成したEXEファイルに対して発行するコマンド?なのね、、、

 → Link /edit /subsystem:console C:\TEST.EXE




EXEを生成する時点で、何か変更しなければならないのかと思っていた。










クソっ! もうちょっと早く気付くことが出来れば...

ここまで到達するのに8時間くらい掛かった...


俺、センスない。







ま、それはイイ。



改めて実行してみる
┌───
│C:\>TEST.exe
│★表示したい文字列★

│C:\>

└───






ぬぉ。 やっと出たYo!!












近くに聞ける人がいたら、すぐ解決してたんだろうな。

くっ!



















ところで、今思うと・・・
LINK.EXEを発見した時点で、俺はなぜ「/?」を打ち込んだのだろう?

偶然とは言え、このアクションが無ければ
もっと時間が掛かったかもしれないな

そこだけが救いだった





つかれた










2010年10月05日(Tue)▲ページの先頭へ
タスクからのバッチファイル(*.BAT)実行結果が0x4

Q:タスクからバッチファイルを実行したが動かない。

A:どんなバッチを動かそうとしたんだ?
  詳細が分からないと答えようも無いだろう!

Q:フォルダをコピーしようとしただけだよ!
  実行結果:0x4 って何だ?


=====================

...ということで自分で調べた結果。



やりたいことは単純。

ローカルディスク(C:)に存在するフォルダ「DUMMY」の内容を
ネットワークドライブ(Z:)にコピーしたい。

作成したバッチファイルは、こんな感じ。





...と、書いていて思い出した。




ネットワーク上のフォルダを参照させる場合は「何か」必要だったはず...





「何か」とは何か?






思い出せない。





ググる










発見、「net use」だ。

しばらくバッチファイルなんて作ってなかったから忘れていた。






改めてバッチファイルを修正してみる。



ネットワーク上のサーバ(REMOTE_SERVER)で共有化されている
「COMMON」フォルダを Zドライブとして割り当てる。

その後、Zドライブにコピーする。    .....と。








実行結果は... 案の定、解決。

無事に実行された。
















それにしても、エラーコード:0x4 だけでは詳細は分からない...





 






2010年09月29日(Wed)▲ページの先頭へ
VB 標準モジュールが開かない

Q:VB6の標準モジュールを読み込めません。

A:読み込めません…じゃ分からない。
  他にも何かメッセージ、出てるだろ!

Q:読み込めないんだよぉ!!


=====================

...ということで自分で調べたのだが...


分からない。



通常、以下のようなモジュールをダブルクリックすると
VBのエディタがサクっと開くはずなんだけど...






やっぱり開かない。








ちなみに、モジュールの中身はこんな感じ↓
┌─┬───────────────────────────────────────────
│01│Attribute VB_Name = "ModuleCommon"
│02│Option Explicit
│03│'〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
│04│' Common Module
│05│'〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
│06│Public Function WaitTimer(WTime As Single)
│07│ Dim sv As Single
│08│ sv = Timer
│09│ Do Until Timer > sv + WTime
│10│ DoEvents
│11│ Loop
│12│End Sub
└─┴───────────────────────────────────────────







何が悪い?







1行づつ・1文字づつ検証したところ・・・
┌─┬───────────────────────────────────────────
│01│Attribute VB_Name = "ModuleCommon"
│02│Option Explicit
│03│'〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
│04│' Common Module
│05│'〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
│06│Public Function WaitTimer(WTime As Single)
│07│ Dim sv As Single
│08│ sv = Timer
│09│ Do Until Timer > sv + WTime
│10│ DoEvents
│11│ Loop
│12│End Sub
└─┴───────────────────────────────────────────



これだと開けた。







違いは、何?






3行目だ






コメント行の「〓」の数が40個か、36個か? それだけ。







いや、そんな理由な訳がない。






何かコーディング上の規約みたいなモノがあるはず。


もう少し調査してみよう!













・・・と思ったが・・・




ま、開けるようになったからイイや。





そのうち気が向いたら、ちゃんと調べる。





 





2010年09月28日(Tue)▲ページの先頭へ
EeePcの無線LANがつながらない

Q:普段使っているEeePcの無線LANが突然使えなくなりました。

A:環境をいじったんじゃないの?

Q:何もしていないっ!昨日まで使えていたのにぃ!

=====================

...ということで自分で調べた結果。


何てことはない。
EeePcには無線LANの機構自体をOn/Offできるスイッチが付いていた。


[Fn]キーと[F2]キーを同時に押下すると、On/Off切り替えされる。
ようは、これがOffになっていただけなのだ。




よく考えてみれば、どこかしこでも無線LANが有効になっているのも
按配は良く無いし、こういったスイッチが付いているのは理解できる。




ちなみに、この機構をOffにするとネットワーク接続のプロパティから
ワイヤレスネットワーク接続のアイコン自体も消えた。

一見すると、無線の機能が壊れたのか?と勘違いしてしまいそうだ。




まぁ、知っている人からすると当たり前のことかもしれないが、
自分にとっては難問であった。





ちなみに、誰がこのスイッチをOffにしたのだろう・・・

自分には全く身に覚えが無い。





恐らくウチの猫がうっかり踏みつけて、押しちゃったんだろうなっ

















ウチには猫は居ない・・・









 

2010年09月23日(Thu)▲ページの先頭へ
EXCELエクセルVBAでエラー400

Q:エクセルのVBAでエラー400が発生。

A:400だけじゃ分からない
  他にも何かメッセージ、出てるだろ!

Q:だから、400しか出てないんだって!


=====================

...ということで自分で調べた結果。

Microsoft Excel Objects の方にこのようなマクロを記述した場合に発生する様子。


でも、こうすればエラーは出なくなった。


ようはsheetを特定できないようなマクロは書くな!...ってことだろう。
これは、覚えておくことにする。

でも、最初から標準モジュール(Module1)に記載しておけば、
エラーにはならないみたいだ。


よく分からんが、エラーを発生させない方法は分かった。



ちなみに、1行づつトレースしたところ別のエラーが出た。



実行時エラー 1004
アプリケーション定義またはオブジェクト定義のエラーです。





よく分からないが、同じ原因だろうな、たぶん。

これについては、また別の機会にでも調べよう...