[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2chのread.cgiへ]
Update time : 06/22 14:14 / Filesize : 234 KB / Number-of Response : 1002
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Win32API質問箱 Build53



1 名前:デフォルトの名無しさん [2007/05/11(金) 20:27:08 ]
スレ立てるまでもない、Win32APIのついての質問はこちらへどうぞ。
やさしいお兄さんやお姉さんたちが答えてくれるかも。

過去スレ、関連リンクは>>2-5くらい。

■注意
・質問する前にMSDNライブラリやPlatformSDK、Google等で検索しましょう。
・日本語版MSDN Online Libraryは不完全です。英語版(msdn.microsoft.com/library/)の利用推奨。
・APIフックなど高度な事をしたい場合はできるだけAdvenced Windowsを読みましょう。
・言語特有の問題やIDE、MFCやVCLなどの質問はそれぞれの言語や開発環境スレで

433 名前:デフォルトの名無しさん mailto:sage [2007/05/27(日) 22:59:21 ]
>>431
すみません、俺が悪かったです。もう名乗りません。
違う方法でなんとか解決できたのでなんとか出来ました。

434 名前:デフォルトの名無しさん mailto:sage [2007/05/27(日) 23:25:20 ]
>>433
だーかーら、名乗りもせず「俺が」なんて言うな、っていってんだよ
>>430です、くらい書けよ
誰だかわからんだろう

435 名前:デフォルトの名無しさん mailto:sage [2007/05/27(日) 23:28:17 ]
いえ、それは俺です。

436 名前:デフォルトの名無しさん mailto:sage [2007/05/27(日) 23:29:05 ]
>>434
俺だよ俺

437 名前:デフォルトの名無しさん mailto:sage [2007/05/27(日) 23:34:17 ]
だから俺が俺なんだって
勝手に人の名前騙るなよ

438 名前:デフォルトの名無しさん mailto:sage [2007/05/27(日) 23:36:23 ]
>>437
すまん、お前が俺か。
悪かった。

439 名前:デフォルトの名無しさん mailto:sage [2007/05/27(日) 23:54:24 ]
>>412
もしかして: WM_HELP
なんか、ID_MYHELPとか書いているし。

440 名前:412 mailto:sage [2007/05/28(月) 00:02:55 ]
>>439
いえ、WM_HELPではありません。まぁ同じなんですけど、
F1ボタンを押したら自分で作ったヘルプのウィンドウが出るようにしています。
それはいいんですが、F2〜F8にもその他の機能を用意していて、
あるエディットコントロールをサブクラス化してそのプロシージャで
WM_KEYDOWNで拾っているのですが、それが機能しなくなりました。
F1だけをアクセラレータで変にやったせいなのでしょうか?

441 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 00:12:26 ]
>>420
コミックスタジオでも買った方が良いぞ

あ、マンガ描くためのソフトから作ったのを作品の
ネタにするのなら恐れ入る



442 名前:名無し@沢村 [2007/05/28(月) 00:16:43 ]
突然ですが、2つのメモリデバイスコンテキストを合成して描画することに成功しました。
黒い線の画面のほうをBitBltのSRCANDで画面にコピーし、
赤い線の画面のほうをSRCCOPYで画面にコピーしたら、
再描画をかけてもどっちの線も消えませんでした。
ただ、この方法だと、赤い線も黒くなってしまうようです…

赤い線が黒くならないようにするには、どうしたらいいのでしょう?
いくつも組み合わせがあるので、全部ためすのは、気が遠くなるほど時間がかかりそうなので…

443 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 00:20:18 ]
組み合わせとは何の組み合わせ?

444 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 00:30:55 ]
ねむい

445 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 00:58:48 ]
質問です。
CでWindowsプログラム作るため、Win32APIを学ぼうと思っていろいろ調べている途中で気になったことがあります。
テンプレのWin32 API入門というサイトではWin32API学ぶ上で、
windowsの知識とアーキテクチャの知識が必須だと書かれていました。
そこで、「コンピュータの構成と設計」「アーキテクチャ徹底解説MicrosoftWindows2000・・・」
などの書籍でコンピュータアーキテクチャについて学んだ方がいいのでしょうか?
お金に余裕がないので無駄な出費は避けたいです。
ちなみに私は、基本情報技術者試験の知識とCの入門書の知識くらいしかもっていません。
御回答よろしくお願いします。

446 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 01:02:31 ]
パソコン初心者でもなければ別に要らないと思う

447 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 01:02:50 ]
いらん

448 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 01:03:19 ]
その程度は、Win32APIを色々試しているうちに自ずと判ってくるから要らない。

449 名前:445 mailto:sage [2007/05/28(月) 01:09:36 ]
>>446-448
御回答ありがとうございました。
ではこのままWin32APIの学習に入ろうと思います。

450 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 02:30:45 ]
Windowsプログラムを作るためならば、APIから学ぶのは止めたほうがいい。
実際開発では窓とかはフレームワーク任せだからな。それで問題ない。
ど〜しても、変態的な非効率な開発を求めるならAPIから始めることを止めはしない。

451 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 02:59:11 ]
>>449
>>450の意見と思いっきり逆のタイトルですまんが

APIで学ぶWindows徹底理解
www.amazon.co.jp/exec/obidos/ASIN/4822228266

この本はまじでおすすめ。
雑誌連載のムック化だから、それぞれのトピックは完全に独立してて
一つ一つ段階的に学習していく、って使い方はできない(想定されてない)けど、
それぞれに読み応えがあるし、なにより文章がとても上手くて面白い。
内容はタイトルどおりで(「徹底」はちと言いすぎか)、
APIの使用例を通してWindowsの仕組みや叩き方が結構クリアに見えてくると思う

ただし、Cの基礎が分かっていることが条件。
あとソースはBCC用だがVCのことも全体に渡ってちゃんと配慮して書かれてる

まぁ服毒本として興味があればどうぞ




452 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 05:26:58 ]
XPのタスクマネージャのプロセスタブと同じ様な働きをするプログラムを作ってます。
本物のタスクマネージャのプロセス一覧でユーザー名を有効にすると、
LOCAL_SERVICEやNETWORK_SERVICEといったユーザー名の
プロセスが表示されますが、これらのプロセスをOpenProcessTokenで
開こうとするとGetLastError() == 5のアクセス違反でを取得できません。
ログインユーザーやSYSTEMのプロセスなら成功するのですが、
こういった****_SERVICEのプロセスからユーザー名を取得する
方法がありましたら教えてください。
Web検索しても成功してる人の記事が見つかりませんでした。

ぶっちゃけ下の人と同じ事をしたいのですが、
リンク先の回答者が教えているcodeprojectの方法では
取得する事はできない様です。
ttp://rararahp.cool.ne.jp/cgi-bin/lng/vc/vclng.cgi?print+200407/04070077.txt


453 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 06:03:28 ]
すいません、アクセス違反じゃなくて、
GetLastError() 5 「アクセスが拒否されました。」
ってエラーです。

454 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 06:31:58 ]
開き方が悪い

455 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 08:08:45 ]
最低限必要なところのAPIくらい理解しとかんと問題が起きたときにどうにもならん

456 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 08:14:01 ]
>>442
そうか?
小さいBMPを2つ作って、
組み合わせをプレビューをすればいいんじゃない?

Photoshopとかあれば、もっと容易だけど

457 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 08:44:38 ]
>>453
偽装しておけ

458 名前:デフォルトの名無しさん [2007/05/28(月) 10:08:22 ]
ツールバーのアイコンに指定する背景色のカラーコードって何を指定すると透過になるんですか?

459 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 10:10:09 ]
イメージリストを作るときのフラグによって異なる

460 名前:445 mailto:sage [2007/05/28(月) 10:59:14 ]
いろんな回答がでて、よく分からなくなってきました。
最終的にDirectX使いたいという場合はどうなのでしょう?


461 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 11:04:22 ]
DirectXとWin32API はあんまり関係ない。
API直接やDirectX直接を身に付けたいなら 参考書を買ってDelphiでやるという手がある。
API/DirectXの参考書はC/C++で書かれているから、これをC/C++のままコピペしたら
動くのは当然だけど勉強には、あんまりならん。
Delphiに直しながらやれば結構勉強になる。




462 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 11:17:27 ]
>>460
DirectX 入門

>>461
Delphiはマジ死亡しているんで知らないなら覚えるだけ無駄。
移植の問題ありまくりなのに素人に、わざわざ複雑な方法を提案してどうする馬鹿か?

463 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 11:18:25 ]
>>461
Delphiの布教乙

464 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 11:22:02 ]
>>462
  WIN32APIを今さらやるのも、Delphiやるのも同じだろう。
トータルで速い方法を説明してるだけ。
DelphiのVCLはWin32APIの非常に素直なラッパで、VCLを理解すればAPIの作法も理解出来るからね。
MFCでやるよりはずっといい。

465 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 11:22:39 ]
DirectX はコピペだけでもやること多いのに、さらに言語移植て…

466 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 11:23:33 ]
>>464
ラッパライブラリから API を学ぶのは違うようなキガス

467 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 11:25:31 ]
DirectXをやるのにDelphiを勧めるぐらいならC++Builderにしろよ

468 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 11:26:14 ]
APIって学ぶものなの?
こんなんあったよな〜ってMSDN漁って
挙動とか注意点とか調べて使うだけじゃない?

469 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 11:28:00 ]
>>468
最初の作法とイベント駆動まわり、MSDNの見方だけは 慣れとく必要がないかな?

470 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 11:37:09 ]
>>464
>WIN32APIを今さらやるのも、Delphiやるのも同じだろう。
同じじゃねーよ!

471 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 11:41:58 ]
>>465
DirectXは COMで IDispatch も持ってるから、 Delphiからだと実はVBのようにもアクセス出来る
インターフェースを定義せずに、OLEVariantでアクセス出来るわけ。
ただし遅いけど挙動を見るお試しならまあ十分




472 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 11:44:46 ]
>>460
Win32APIでWindowsプログラミングは激しく不向き。
窓一枚で100行とか書かされるからな(コピペですむにしても)。

ただDirectXアプリは窓一枚出せば枠組みはそれでおしまいだから十分いける。

言語に関してはWindowsでCが最適な分野というものはほぼ存在しない。
Cの学習が主眼でないならC++なんかの他の言語の方が後々効率がよい。
C++はCの知識の延長で使うだけでもだいぶ便利。

>「コンピュータの構成と設計」「アーキテクチャ徹底解説MicrosoftWindows2000・・・」
この辺は日本語学習における日本文化の知識みたいなもんでさしあたり不要。
最低限の説明はDirectXの本に載っている程度のもので十分。

473 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 12:34:07 ]
>>471
サンプルやヘルプがC++を前提に書かれていて、
いちいち言語の違いを意識して書き直さなければならないので、
挙動を見るだけでも完全に不向き。

474 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 12:37:12 ]
>>461は自分がやった方法が一番良いと思っている可哀想な子

475 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 13:02:54 ]
>>473
質問者はC++じゃなくてCらしいから
->lpVtbl->ブフォァアな目にあうけどな

476 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 13:10:43 ]
全く別の言語を扱うより遙かにマシ。

477 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 13:10:57 ]
ぶふぉぁあ?

478 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 13:18:39 ]
>>477
次のバージョンで追加されるメソッドです
たぶん

479 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 13:20:29 ]
そうなのか、ダイレクトエッキスには日本語のメソッドがあるんだなたぶん

480 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 13:53:17 ]
COMの話だろ

481 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 14:31:16 ]
昔は、Delphiから CreateOleObject('CLSID_DirectInput') とか出来たけど DirectX8から出来なくなった




482 名前:445 [2007/05/28(月) 15:23:03 ]
ではアーキテクチャについては放置し、C++の方が楽みたいなのでそちらも覚えながら、
C++でDirectX使えることを目標にします

483 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 15:27:18 ]
DirectXならDirectXだけの世界だから大丈夫 Win32もとなると大変だけどね。

なお、言語の複雑さは C++ >>> Delphi/C#/VB > C だから覚悟はしておいてね

484 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 15:46:39 ]
C#って結構難しいよ

485 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 16:15:54 ]
>>483
>言語の複雑さは C++ >>> Delphi/C#/VB > C
C++の全てを理解しようとすればそうかもしれんが、DirectX/MFC等を使うのに必要最低限の知識でいいなら、
Cを(本当に)知ってる人なら3日もあればOKでしょう。


486 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 16:21:02 ]
言語論争ウゼェ

487 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 16:33:10 ]
>>445君へ

まずは、君が言うとこのDirectXの大海に向かって漕ぎ出せばいいんじゃね?
悩んだら、CやSDKの掟みたいなものをクレクレで聞くんじゃなく、
自分なりの解答を得たうえでをここの荒くれどもに問い合わせればいいんじゃない?
(そこそこ罵声はあるけどビビらないで)

んで、気が付きゃ、君も荒くれどもの一員

488 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 16:37:47 ]
>>486 素のAPIに触ろうなんて貴重な人材を自分の陣営に入れたくて必死なんだろ。 許してやれよ

489 名前:デフォルトの名無しさん [2007/05/28(月) 19:16:09 ]
ウィンドウの中にタブコントロールを作成し、それにアイテムを
1つだけ挿入するプログラムを書いたのですがうまくいきません。

以下のコードはメインウィンドウのウィンドウプロシージャが
WM_CREATEを受け取ったときに実行されるOnCreate関数です。

これを実行すると、ウィンドウの中に 250×150のサイズの立体的な
ダイアログ色の長方形が表示されますが、その長方形にタブは付いていません。
また、タブコントロールに挿入されているアイテムの数を表示するメッセージ
ボックスは "n=0"と表示します。なぜでしょうか?

1. throwは実行されない ⇒ タブコントロールの作成は成功している。
2. "挿入失敗"のダイアログは表示されない ⇒ アイテムの挿入にも成功しているはず。

490 名前:デフォルトの名無しさん [2007/05/28(月) 19:17:26 ]
void OnCreate(HWND hParent)
{
InitCommonControls();
HWND hTab = CreateWindow(WC_TABCONTROL,
"",
WS_CHILD | WS_VISIBLE,
0, 0, 250, 150,
hParent, (HMENU)123,
(HINSTANCE)GetWindowLong(hParent, GWL_HINSTANCE), 0);
if (!hTab) throw;
TCITEM item;
item.mask = TCIF_TEXT;
item.pszText = "hello";
if (TabCtrl_SetItem(hTab, 0, &item) == -1)
MessageBox(0, "挿入失敗", "", MB_OK);

// 挿入されたかどうかチェック
int n = TabCtrl_GetItemCount(hTab);
char buf[1024];
wsprintf(buf, "n=%d", n);
MessageBox(0, buf, "", MB_OK);
}

491 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 19:23:24 ]
エディットコントロールにWS_VSCROLLでついてくるスクロールバーについてですが、
このスクロールバーが一番下までスクロールされているかされていないかを判断するには
SetScrollInfo()とGetScrollInfo()を使わなければいけないのでしょうか?
なんかSetScrollInfo()で設定しても、元からあるスクロールバーのままで何も変わらず
いまいち使い方がよくわからなくて困ってます。これらを使わずに
一番下までスクロールされているかそうでないかを判断する方法はないでしょうか?



492 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 19:26:43 ]
あります

493 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 19:43:45 ]
で?

494 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 19:48:07 ]
bool 型は便利だな

495 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 20:33:48 ]
>>492
>>491の後半部分しか答えてないよ。

496 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 20:42:39 ]
全部の質問に答えたとは誰も言っていない。

497 名前:491 mailto:sage [2007/05/28(月) 21:29:42 ]
どのように判断すればいいのでしょうか?

498 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 21:38:57 ]
::GetScrollPos

499 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 21:46:11 ]
>>489-490
> (中略)
> 2. "挿入失敗"のダイアログは表示されない ⇒ アイテムの挿入にも成功しているはず。
> (中略)
> if (TabCtrl_SetItem(hTab, 0, &item) == -1)
> MessageBox(0, "挿入失敗", "", MB_OK);

挿入のときはTabCtrl_InertItem(or TCM_INSERTITEM)。

あと、そこのSetItemは失敗してる。
にもかかわず"挿入失敗"のダイアログが出ないのは「== -1」にしているから。
ヘルプでSetItemの戻り値確認してみ。(InsertItemとの違いもな)


500 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 23:12:36 ]
教えてください。
SetClipboardViewerで画像かどうかを識別するには何を使えばいいのでしょうか?

501 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 23:29:50 ]
>>500
WM_DRAWCLIPBOARDでEnumClipboardFormats



502 名前:500 mailto:sage [2007/05/28(月) 23:35:32 ]
>>501
ありがとうございます。やってみます。

503 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 00:02:42 ]
自作アプリの起動時処理として、とある起動済みの(自作でない)アプリケーションのウィンドウハンドルを取得したいのですが
ウィンドウキャプションがしょっちゅう変わる上に
ウィンドウクラス名もATL:00xxxxxxといった名前でこれまたWindowsを再起動するたびに変わります

なので FindWindow では手が出ません。
どうやって取得したらいいでしょう?


現在は、起動時に「対象アプリケーションをクリックしてください」と表示して
SetCapture と WindowFromPoint の組み合わせでなんとか取得してますが自動化したいのです。

504 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 00:10:16 ]
そのアプリの特徴を研究する。

505 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 00:23:09 ]
子ウィンドウを列挙してそのパターンから判別ればよかろ。

506 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 00:31:55 ]
プロセス列挙してモジュール名で判別なんてのも

507 名前:503 mailto:sage [2007/05/29(火) 00:59:45 ]
>>504-506
506さんの方法でやってみます。
ありがとうございました。

508 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 02:03:14 ]
>>503
FindWindowを使えばいいよ

509 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 05:31:25 ]
>>503
アプリケーションの名前が判ってるなら、
GetWindowThreadProcessIdで指定の窓のpidを取得、
pidからOpenProcessでプロセスハンドル、
プロセスハンドルからEnumProcessModulesでモジュールハンドル、
GetModuleBaseNameでアプリケーション名を取得できる。
GetModuleFileNameExでフルパス名も取得できる。
以上を見つかるまでEnumWindowsで繰り返す。

EnumProcessesから辿る場合はどうすんのかな。


510 名前:452 mailto:sage [2007/05/29(火) 05:52:02 ]
お願いします。
>>452

511 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 06:01:19 ]
>>510
セキュリティソフトに蹴られたりしてね?
最近のセキュリティソフトはマルウェア対策でその手のアクセスを蹴る場合がある



512 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 06:12:48 ]
あ、分かった
>>510
WTSEnumerateProcessesでプロセスのSIDが直接手に入る
OpenProcessTokenは必要ない

513 名前:452 mailto:sage [2007/05/29(火) 06:37:47 ]
ありがとうございます。
SID取得できたんで解決しそうです。

514 名前:489 [2007/05/29(火) 06:39:32 ]
>>499
ありがとうございます。
TabCtrl_InsertItemに変えるとうまくいきました。

515 名前:452 mailto:sage [2007/05/29(火) 07:06:24 ]
NETWORK SERVICE、LOCAL SERVICE共に
無事LookupAccountSidで取得できました。

516 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 07:11:47 ]
報告乙

517 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 07:20:17 ]
なんか夜明けと共に明るい声が響いてくる

518 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 07:42:12 ]
EnumWindows/EnumChildWindowsで見て特徴的な何かを探すかないんじゃないの

519 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 08:20:52 ]
>>509
それをソースコードにするとどのようになりますか?

520 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 08:42:03 ]
コンパイルすればプログラムになるだろ。

521 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 11:31:32 ]
とにかく、ウィンドウタイトルもウィンドウクラスも変わるものに対して、
何を持って特定するのだろうか。EXEファイル名だって変えられるしな。



522 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 12:19:32 ]
ファイル名が分かればファイルのチェックサムを算出できる。

523 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 12:31:16 ]
>>503
なんか、ネトゲのチートツールかなにかを作ろうとしてるように見えるwww

524 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 12:56:08 ]
ATL製ネトゲなんてあるのか・・・?

525 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 14:26:51 ]
ふとした疑問なんだけど
Win32ファイバって一体どういう用途で使うと真価を発揮できるんだろ?

526 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 15:06:03 ]
アセンブラが使えない言語でコルーチンを実装したい場合だろうな >>525
C++/Delphi はインラインアセンブラが使えるから自前でコールチンの実装が出来るから不要。
C#.NET VB.NET あたりの為に用意されたものだろう。

コルーチンは、get/put同士を接続するパイプとか
クライアント型で書かれたものをサーバ型に変換するといった場合に使う

527 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 15:07:04 ]
フィボナッチ数列を求める

528 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 15:32:41 ]
アニョハセヨー(SJIS)を
%E3%82%A2%E3%83%8B%E3%83%A7%E3%83%8F%E3%82%BB%E3%83%A8%E3%83%BC
に変換するのってなんか手っ取り早いAPIあったら教えてください。
最終的には↓にしたいです。
www.google.co.jp/search?source=ig&hl=ja&q=%E3%82%A2%E3%83%8B%E3%83%A7%E3%83%8F%E3%82%BB%E3%83%A8%E3%83%BC&btnG=Google+%E6%A4%9C%E7%B4%A2&lr=

529 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 15:46:06 ]
MultiByteToWideChar と WideCharToMultiByte

530 名前:529 mailto:sage [2007/05/29(火) 15:50:08 ]
具体的には、MultiByteToWideChar でSJISからunicodeにし、
WideCharToMultiByte で unicodeから UTF-8にする。
最後に、そのバイト列をsprintf とかで文字列にすればよかろう。

531 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 17:40:47 ]
#define VOID void とか #define CONST const は、どういう意味があるんですか?



532 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 17:44:23 ]
>>531
#define マクロで置き換えてるだけ。
データ型が大文字(DWORD, UINT)なんで、
大文字で揃えたかったんだけじゃね?

533 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 17:48:28 ]
>>525
使い方によっては、デコード/エンコード、画像処理なんかでも

534 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 17:56:16 ]
>>531
VOIDとかは違うが、
boolとかconstとかのキーワードはもともとのC言語には無いから、C++でもCでもtう

535 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 17:59:10 ]
const は C でもあるぜ。
まあ、全て大文字の奴を使えば、どれもどの環境でも安心! という形にしたかったんだろう。

536 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 18:28:45 ]
>>525
Unixからの移植に使えるとAdvanced Windowsには書いてあったような気がする

537 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 19:13:37 ]
>>535
最近のANSI Cにはconstがあるが、これは比較的後になって追加されたもの。
もともと、というか少なくともK&Rにはconstはなかった。

538 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 19:18:44 ]
K&R まで遡るのはアレだけど、
昔の ANSI C にすら無かったのか・・・。

539 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 19:23:12 ]
少なくとも89年のANSI Cではあったな。

540 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 19:43:17 ]
Windowsの開発が始まった頃には間違いなくあった。

541 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 21:10:54 ]
>Windows 1.0が登場したのは1985年11月18日



542 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 21:26:47 ]
>>538
gccじゃないUNIX用のコンパイラはものすごく古い仕様のままだったりするから
Win32の場合はconstが使えない可能性なんて考慮する必要すらないな

543 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 22:00:31 ]
const char *とchar const *は違うそうです。
ということはconst char const *もあり?
それぞれどう違うのか説明おねg

544 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 22:03:52 ]
const char * と char const * は同じだよ。
違うのは char * const 。

545 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 22:14:17 ]
WinAPI関係ない
C++スレとかいきなされ あるいは本屋いって入門書でも立ち読みしとけ

546 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 22:22:54 ]
>>545
この手のは意外と書籍じゃわかりやすく解説されていない気がする。

547 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 22:25:26 ]
>>546
どっちにしろスレ違い。

548 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 22:29:45 ]
CONSTとconstに関連して,コーディングスタイルについて質問です。
Windowsプログラミングで自分で関数やクラスをつくるときに,
(1)BOOL, UINT, CONSTなどのWin32用にtypedefされたものを使う
(2)bool, unsigned int, constなどのC++予約語を使う
どっちが一般的なのでしょうか?

549 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 22:32:28 ]
C++のboolとBOOLは違うんだぜ

550 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 22:37:31 ]
どう違うんだぜ?

551 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 22:37:51 ]
>>549
そもそもC++にはBOOLなんて型はない



552 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 22:39:42 ]
>>550
普通にWindows.hをインクルードしていれば、BOOLはintにtypedefされる

553 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 22:46:55 ]
>>548
SDK,APIの結果を保証するなら、BOOL。
論理で判断するならbool。
という風に使い分ける。

単にintといっても不確定要素をはらんでる。

554 名前:デフォルトの名無しさん [2007/05/29(火) 23:38:13 ]
おいら,BOOL のくせに 3 種類 ( >0, ==0, <0 ) の値を返してきて
それらをきちんと判別しないといけない API って
GetMessage() しか知らないんだけど,他にもあるんだっけ?

555 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 23:53:25 ]
だってBOOTはtypedef int BOOL;だし‥‥
bool型とは違うのだよ。

556 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 00:10:56 ]
BOOL/boolはほかが言っているとおりなんで、残りのやつについて俺の場合
CONSTは使わず、常にconst
UINTはunsignedより文字数少ないから場合によって使う

557 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 00:37:32 ]
>>555
BOOT?
>>552

558 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 00:40:54 ]
>>557
BOOTSを語れゴラァ part2
pc11.2ch.net/test/read.cgi/tech/1139266461/

559 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 00:44:31 ]
>>558
ちっ、先に張られたか。

560 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 02:42:33 ]
つーかBOOLもBOOTSもどーでもいいからお前らWin32APIの質問しろよ

561 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 02:49:46 ]
>>554
あれヒドいよなw
なら戻り値の型 BOOL にすんなと。



562 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 02:50:05 ]
>>560
BOOLはWin32APIの話だろうが。

563 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 03:20:10 ]
>>562
BOOLはwindef.hで定義されている単なるtypedefであり、APIではありません。

564 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 04:24:21 ]
>>563
型もAPIのうちですよ。


565 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 04:31:43 ]
Vistaで新規に追加されたAPIのリストとかってどこかにありますか?
あれば教えていただきたいです

566 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 05:27:23 ]
>>565
msdn2.microsoft.com/en-us/library/aa383687.aspx

567 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 05:53:39 ]
>>566
うお、こんな体系化されたページあったのか
ありがとうございます

568 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 09:30:24 ]
XPで追加されたAPI一度も使ったことないどころか一つも知らんかった・・・orz

569 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 10:03:53 ]
記述漏れがあるけど参考程度にはなるな

570 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 14:51:46 ]
>>554
WM_CTRCOLOR**の戻り値とか、そもそもDialogProcとか
まあx64ではBOOLが32bitのままだもんでDialogProcの戻り値はINT_PTRに変わったけどな

571 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 15:50:15 ]
GetMessageもWin32化するときに戻り値の型をintへ変更すればよかったのに



572 名前:デフォルトの名無しさん [2007/05/30(水) 16:23:46 ]
質問です。

あるAPLから、フルスクリーンAPLのデバイスコンテキストを
取得したいのですが、どのようにしたら実装できますでしょうか?

573 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 16:39:17 ]
GetDC(NULL)

574 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 16:46:21 ]
APL(エーピーエル)は、コンピューターのプログラミング言語の一種で、
1957年のケネス・アイバーソンによる創案に基づいた独特の表記法を用いた、
対話型インタープリター言語である。とくに配列処理に優れる。
「APL」とは、『Aプログラミング言語』(A Programming Language)の略であるが、
言語の特性から時に『配列処理言語』(Array Processing Language)と言い換えられる。

575 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 16:55:20 ]
これって、アルファベットの A を意味してるのか、
それとも冠詞の a を意味してるのか、
どっちなんだろ?
和訳は前者を採用してるみたいだけど、
訳の都合かもしれないし。

576 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 17:01:20 ]
>>575
double meaningじゃないのかな。
と、適当なことを言ってみる。

577 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 18:00:53 ]
ごめん素で分からんのだが、APLって何

578 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 18:06:57 ]
APL知らんのか。言語だよ
キーボードが特殊だった。まあ普通のキーボードでなんとかなるが

579 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 18:07:50 ]
APLって遅延評価を積極的に使った言語だったよね
16ビットの鈍足マシンで巨大な配列を使っても結構速く結果が出た

580 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 18:58:42 ]
冠詞の a で始まる固有名詞は見たことない

581 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 19:14:17 ]
>>580
>>574で見ているはずだ



582 名前:デフォルトの名無しさん [2007/05/30(水) 21:25:35 ]
ある Windows マシン上の動画ファイルを、
別の Windows マシンからストリーミング再生で表示したいです。
DirectShow + HTTP サーバーを使えば簡単にできそうですが、
動画ファイルを全部ダウンロードすることなく、
動画の特定の時刻からすぐにストリーミング再生することは可能でしょうか?

583 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 21:37:58 ]
ネットワーク共有+プレイヤーで好きな位置にシーク
APIと全然関係ない

584 名前:デフォルトの名無しさん [2007/05/30(水) 21:43:50 ]
ネットワーク共有したくない場合は?

585 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 21:50:20 ]
なにワガママ言ってるんだ?

586 名前:ららら [2007/05/30(水) 21:51:34 ]
ワガママじゃなくて、途中から再生できるようなプレーヤーを作りたいのら。
ネットワーク共有みたいな、面倒な設定はユーザーにさせたくないのら。

587 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 21:51:55 ]
>>584
したくないというキモチをガマンする

588 名前:ららら [2007/05/30(水) 21:52:20 ]
ガマンできないのらー!

589 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 21:57:16 ]
ユーザにわざわざデフォルトの機能以外を使わせて、サーバソフトを用意させるのか?
なんてワガママな奴だ。

590 名前:ららら [2007/05/30(水) 22:02:42 ]
ちがうのら!
動画ファイルはLAN内じゃなくて、インターネット上にあるのら。
サーバーはインターネット上のホストら!

591 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 22:07:51 ]
インターネット上経由だろうがネットワーク共有できる。
ユーザに負担をかけたくないならUPnPにでもしておけ。



592 名前:ららら [2007/05/30(水) 22:10:44 ]
セキュリティは大丈夫なのか?

593 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 22:13:03 ]
それはお前のコード次第

594 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 22:14:10 ]
馬鹿が自作したソフトを外部公開するのは大丈夫なのか?

595 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 22:17:34 ]
ストリーミングだろうがファイル共有だろうが
インデックスでも作らない限り
キャッシュ無しで指定時間からの動画再生開始は不可能だろ

596 名前:ららら mailto:sage [2007/05/30(水) 22:17:56 ]
わぅー・・・・

597 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 22:26:31 ]
気持ち悪すぎワロタw

598 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 22:28:23 ]
ゲームをバックグラウンドで操作したくて色々思考錯誤してます。
ウィンドウを指定してPostMessageでキーを送ったのですが
EnterやEscなどはちゃんと受け付けますバックグラウンドで動くのですが
LeftやDownはダメでした。要はカーソル移動が出来ないんです。

んでSPY++でLeftの入力時を調べてみたところ下記のようなものが出ました

WH_GETMESSAGE:[WM_KEYDOWN or WM_KEYFIRST,256], wParam:[0x00000025], lParam:[0x014b0001]

WH_GETMESSAGE:[UnKnown,1104], wParam:[0x00000025], lParam:[0x00000001]

WH_GETMESSAGE:[UnKnown,1105], wParam:[0x00000025], lParam:[0xc0000000]

WH_GETMESSAGE:[WM_KEYUP,257], wParam:[0x00000025], lParam:[0xc14b0001]

これをPostMessageで送るにはどのように記述すればよろしいでしょうか
またUnKnownの文字列は何をしてるのか教えてください
初心者な質問で申し訳ないですがよろしくおねがいします。

599 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 22:46:41 ]
不正はやめましょう。

600 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 22:55:38 ]
素直にUWSCで組みましょう

601 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 23:00:05 ]
低スキルチーターがあらわれた!



602 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 23:02:55 ]
じーんせいはワンツーパンティー

603 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 23:14:21 ]
>>582
Windows Media Server 買ってら…
ってかマジレスするとストリーミングサーバとクライアント
を実装するってって話になっちゃうのだけれどそうなると
Win32API 1つ2つだけの話じゃすまないのでもはやスレ違い…

604 名前:デフォルトの名無しさん mailto:sage [2007/05/31(木) 15:23:20 ]
>>579
漏れの完璧で確かな記憶によれば、APL に遅延評価は無かったと思うよ。


605 名前:デフォルトの名無しさん mailto:sage [2007/05/31(木) 15:26:42 ]
>>582
実際にそういうソリューションあるわけだから、自前でコードを書いて
「出来ない」なんて返事はあり得ないよね。

すると「DirectShow + HTTP サーバーを使って簡単に」可能か、
という質問だと仮定すると、返事は「不可能」になります。

市販品のストリーミングシンク/ソースフィルタとかを買えば別だけど。

606 名前:デフォルトの名無しさん mailto:sage [2007/05/31(木) 15:32:57 BE:139752689-2BP(222)]
>>582
Server2003に標準で入ってるよ。
www.microsoft.com/japan/windowsserver2003/technologies/winmedia/default.mspx

607 名前:デフォルトの名無しさん mailto:sage [2007/05/31(木) 15:47:14 ]
Windows Home Server機がAppleTV並みの値段とサイズで出るといいんだが

608 名前:デフォルトの名無しさん mailto:sage [2007/05/31(木) 23:30:13 ]
日本語版 Windows SDK だって
www.microsoft.com/downloads/details.aspx?FamilyID=7614fe22-8a64-4dfb-aa0c-db53035f40a0&DisplayLang=ja

609 名前:デフォルトの名無しさん mailto:sage [2007/06/01(金) 00:06:19 ]
>>608
英語版の最新があれば十分だと思う。同じバージョンの日本語版っていうのであれば使おうと思うけどね。

610 名前:デフォルトの名無しさん mailto:sage [2007/06/01(金) 00:27:56 ]
>>608
どうみてもAPIまわりは日本語化されてない予感

611 名前:デフォルトの名無しさん mailto:sage [2007/06/01(金) 01:00:04 ]
サンプルプログラムのバグを報告してもなかなか修正されねぇよーって中の人が言ってたから、
日本語版では修正されてっかもね。



612 名前:デフォルトの名無しさん mailto:sage [2007/06/01(金) 01:00:49 ]
今まさに英語版入れた所なんだよな……。
.NET まわりのドキュメントの日本語化は欲しいところだが API まわりは英語で構わんし。

異言語版SDK の共存って可能なんすか?

613 名前:デフォルトの名無しさん mailto:sage [2007/06/01(金) 06:05:41 ]
>日本語版 Windows SDK をインストールする前に、英語版 Windows SDK をアンインストールしておく必要があります。
って書いてるよ

614 名前:デフォルトの名無しさん mailto:sage [2007/06/01(金) 06:49:53 ]
>>610
統合前のPlatform SDKも英語版しかなかったからねえ

615 名前:デフォルトの名無しさん mailto:sage [2007/06/01(金) 07:26:12 ]
>>613
あら。すんません読んでませんでした。

ならまあいいか別に英語版で

616 名前:デフォルトの名無しさん mailto:sage [2007/06/01(金) 09:35:37 ]
ドキュメントの一部が日本語なだけじゃないのか
昨日ダウンロード始めたまま寝てしまったが、、、
今夜入れてみるか、、、MSDN待てばいいだけだが。

617 名前:デフォルトの名無しさん mailto:sage [2007/06/01(金) 16:25:42 ]
Ctrl+Alt+Delを禁止するのに今までGINAを使ってたんだけど、Vistaになってどうしたらいいやら・・・
Credential Providerにも同じような機能は用意されてるんだろうか?
メソッド一覧を見た感じでは無さそう・・・

618 名前:デフォルトの名無しさん mailto:sage [2007/06/01(金) 16:51:15 ]
>>609
>同じバージョンの日本語版っていうのであれば使おうと思うけどね。

同じバージョンの日本語版なわけだけど、ホントに使おうと思う?

619 名前:デフォルトの名無しさん mailto:sage [2007/06/01(金) 17:43:19 ]
HTTPS通信にて証明書のエラーの時にダイアログを出したいのですが、証明書のエラーを取得できません。

(1)InternetOpen(NULL, INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, INTERNET_FLAG_ASYNC)
or
InternetOpen(NULL, INTERNET_OPEN_TYPE_PROXY, proxy, NULL, INTERNET_FLAG_ASYNC);
(2)InternetConnect( Open, server, port, NULL, NULL, INTERNET_SERVICE_HTTP, 0, this )
(3)HttpOpenRequest( Connect, Method, Object, HTTP_VER, NULL, NULL, INTERNET_FLAG_RELOAD | INTERNET_FLAG_NO_CACHE_WRITE | INTERNET_FLAG_EXISTING_CONNECT | INTERNET_FLAG_SECURE, this )
(4)HttpSendRequest( OpenReq, Header, Header.GetLength(), str, str.GetLength());
(5)HttpQueryInfo( OpenReq, HTTP_QUERY_STATUS_CODE , Code, &Len, 0 );

(1)〜(5)は全てTRUE, (5)にてCodeが0となってしまいます
//その後InternetSetOption()でSECURITY_FLAGを設定し再度HttpSendRequest()するとCodeは200が来ます。
//SECURITY_FLAGを設定せずにHttpSendRequest()するとCodeは再度0が来ます。

support.microsoft.com/kb/182888/ja を見ると、
HttpSendRequest()の結果がFALSEになりERROR_INTERNET_INVALID_CAなどを取得できるとあるのですが・・・

どこが悪いのかお気づきの方お教え下さい。

620 名前:デフォルトの名無しさん mailto:sage [2007/06/01(金) 18:31:06 ]
>>619
>(2)InternetConnect( Open, server, port, NULL, NULL, INTERNET_SERVICE_HTTP, 0, this )
Portはなぬ?

621 名前:619 mailto:sage [2007/06/01(金) 18:41:32 ]
>>620
可変ですが現在は0x1bb(443)でやっております。
よろしくお願い致します。



622 名前:デフォルトの名無しさん mailto:sage [2007/06/01(金) 18:55:46 ]
>>621
開発環境と、想定IEはなぬ?

623 名前:デフォルトの名無しさん mailto:sage [2007/06/01(金) 19:31:54 ]
INTERNET_FLAG_RELOAD | INTERNET_FLAG_SECURE | INTERNET_FLAG_NO_UI | INTERNET_FLAG_KEEP_CONNECTION

624 名前:デフォルトの名無しさん mailto:sage [2007/06/01(金) 22:48:55 ]
>>618
注意 : 本リリースは、最初に公開された Windows Vista および .Net Framework 3.0対応の英語版 Windows SDK リリースを
ベースに開発されています。 また、その後リリースされた英語版Windows SDK Update for Vista には対応していませんが、
アップデートの主要内容である Visual Studio 2005 Service Pack 1 で提供されたVista の新しいセキュリティ機能
「Address Space Layout Randomization(ASLR)」に対応したコンパイラが含まれています。

って書いてあるな。SDKと完全に同じものではないみたいよ。

625 名前:デフォルトの名無しさん mailto:sage [2007/06/01(金) 22:49:41 ]
関連無いけどこっちもwininetの質問
httpQueryInfoを同じアプリケーション内で繰り返し呼ぶと、
abnormal tarminationとかいうエラーがでるようなのですが
原因となりえるものってどんなことがあるでしょうか?


補足:
いつもエラーするわけではなく、一日そのアプリを起動しっぱなしにしてると発生します。

HTTP_QUERY_DATE|HTTP_QUERY_FLAG_SYSTEMTIMEをフラグにして、
SYSTEMTIME変数のポインタを渡してます。

626 名前:デフォルトの名無しさん mailto:sage [2007/06/01(金) 23:47:24 ]
>>625
エスパーな俺が一言。
wininet系関数は直接の要因じゃない。

配列やアロケート、Open/Closeを良く調べてみ?
あと、HDDキツキツじゃね?

627 名前:デフォルトの名無しさん mailto:sage [2007/06/02(土) 00:21:32 ]
そうさ!
俺がルールだ!!

628 名前:デフォルトの名無しさん mailto:sage [2007/06/02(土) 00:54:04 ]
ソーサ ヨミウリ

629 名前:デフォルトの名無しさん [2007/06/02(土) 14:57:01 ]
SetParentで親ウインドを設定した場合、親ウインドと子ウインドのUIステータスを同期させろ
ってMSDNのSetParentの説明に書いてあるんですけど、
UIステータスってなんですか?
具体的にどういう処理をすればいいのですか?

630 名前:625 mailto:sage [2007/06/02(土) 15:08:12 ]
どうやらサーバーが重くてヘッダーが
取得できてないようです。

httpSendRequestは成功してるんだけどなぁ。

631 名前:デフォルトの名無しさん mailto:sage [2007/06/02(土) 15:17:32 ]
>>629
ttp://msdn2.microsoft.com/en-us/library/ms646335.aspx#_win32_UI_State



632 名前:デフォルトの名無しさん mailto:sage [2007/06/02(土) 15:41:07 ]
>>630
乱発(?)した後、ハンドルやアロケートは的確に開放されてる?
特に、失敗パターンは見落としやすいからね。

633 名前:デフォルトの名無しさん mailto:sage [2007/06/02(土) 18:13:09 ]
OSが動作している環境がマルチコアかどうか判定する方法を教えてください


634 名前:デフォルトの名無しさん mailto:sage [2007/06/02(土) 18:29:37 ]
デュアルやクアッドCPUじゃなくてマルチコアなのか

635 名前:デフォルトの名無しさん mailto:sage [2007/06/02(土) 18:31:46 ]
カーネルに聞け

636 名前:デフォルトの名無しさん mailto:sage [2007/06/02(土) 18:36:52 ]
WMIでWin32_Processorあたりかな?
HT対応のCPUに関してはGetEnumerator()で例外が発生するかもね。
searcher.Get()の結果がヌルポかどうかで判定しないといけないかもよ。

637 名前:636 mailto:sage [2007/06/02(土) 18:37:41 ]
msdn2.microsoft.com/en-us/library/aa394373.aspx

Win32_Processorクラス


638 名前:デフォルトの名無しさん mailto:sage [2007/06/02(土) 18:37:43 ]
kernel32.dll に聞くAPIはほとんどすべて、結果的にカーネルに聞いているのではないの?

639 名前:636 mailto:sage [2007/06/02(土) 18:40:57 ]
msdn2.microsoft.com/en-us/library/Aa394102.aspx

Win32_ComputerSystemクラスも見るべきか?


640 名前:デフォルトの名無しさん mailto:sage [2007/06/02(土) 18:46:58 ]
>>634
デュアルもクアッドもマルチコアではないのですか?

>>636
うう、WMIですか。
Win32API SDKでは取得できないのかな。
ありがとうざいます。

641 名前:デフォルトの名無しさん mailto:sage [2007/06/02(土) 18:50:05 ]
COMベースってキモイよね
複雑性上げて何したいのかワカラン



642 名前:デフォルトの名無しさん mailto:sage [2007/06/02(土) 18:52:55 ]
>>640
そういう場合は普通マルチプロセッサって言わないか?
マルチコアだと「1つのパッケージに複数のCPU」という意味に使われると思うけど。

643 名前:デフォルトの名無しさん mailto:sage [2007/06/02(土) 18:53:07 ]
>>640
デュアルコアとデュアルCPUは違うぞ?

644 名前:636 mailto:sage [2007/06/02(土) 18:54:09 ]
>>641
C側からは、儀式的に感じるよね。
憂鬱なカンヂや

645 名前:デフォルトの名無しさん mailto:sage [2007/06/02(土) 18:58:28 ]
GetSystemInfoでプロセッサ数は得られるが
物理的なプロセッサ数なのか論理的なプロセッサ数なのかは知らん。

646 名前:636 mailto:sage [2007/06/02(土) 19:11:08 ]
最近はGetLogicalProcessorInformationって関数もあるのね

647 名前:デフォルトの名無しさん mailto:sage [2007/06/02(土) 19:25:28 ]
便乗で質問です
複数プロセッサに割り当てられてる各プロセッサ毎の
スレッドIDを知りたいのですが、できるでしょうか?


648 名前:デフォルトの名無しさん mailto:sage [2007/06/02(土) 19:33:38 ]
今その瞬間に、実際に動いているところの、
他のプロセッサで走っているスレッドIDを知りたいの?

649 名前:デフォルトの名無しさん mailto:sage [2007/06/02(土) 19:33:47 ]
GetThreadAffinityMaskでできるみたいですにゃ


650 名前:デフォルトの名無しさん mailto:sage [2007/06/02(土) 19:38:23 ]
>>649
すげえ
初めて叱咤
あんた最強ですぅ

Set〜から辿らないとぐぐってもmsdnに引っかからないね

651 名前:デフォルトの名無しさん mailto:sage [2007/06/02(土) 19:46:56 ]
え、GetThreadAffinityMaskってなくない?
kernel32.dll直接見てもなかったよ



652 名前:デフォルトの名無しさん mailto:sage [2007/06/02(土) 19:51:37 ]
嘘ついたにゃ
SetThreadIdealProcessorを1回空呼びして
プロセッサが指定されてるか調べればいいにゃ

653 名前:デフォルトの名無しさん mailto:sage [2007/06/02(土) 20:01:07 ]
てめえ!
嘘つきやがって、悪い子だな!
つーか優先プロセッサが判るだけで
ほんとにそのプロセサで動いてる証拠なんてねーんじゃねえかぁ?


654 名前:デフォルトの名無しさん mailto:sage [2007/06/03(日) 03:07:37 ]
共有フォルダへのアクセスの認証をプログラムで制御したいのですが、
使用するAPI関数を教えてもらえないでしょうか。
net useコマンドのようなことがしたいです。
ドメイン名とユーザとパスワードを指定して、共有フォルダにアクセス
できるようにしたいです。

655 名前:デフォルトの名無しさん mailto:sage [2007/06/03(日) 04:07:11 ]
>>654です。事故解決しました。
WNetAddConnection3を試してみます。

656 名前:デフォルトの名無しさん mailto:sage [2007/06/03(日) 08:34:11 ]
>>654-655
夜は寝ようよw

657 名前:デフォルトの名無しさん mailto:sage [2007/06/03(日) 11:53:54 ]
[SECTION]
IDENT=VALUE
IDENT2=VALUE2
というINIファイルで、IDENT=VALUEの行だけを消滅せしめる関数ってないですか?

658 名前:デフォルトの名無しさん mailto:sage [2007/06/03(日) 12:10:26 ]
txtで読んで消す

659 名前:デフォルトの名無しさん mailto:sage [2007/06/03(日) 12:12:20 ]
>>657
WritePrivateProfileString()
lpStringにNULLを渡す

660 名前:647 mailto:sage [2007/06/03(日) 13:21:26 ]
自己解決しました。

661 名前:デフォルトの名無しさん mailto:sage [2007/06/03(日) 14:09:42 ]
OutputDebugStringの出力を受け取って表示するツールを探しています。
コマンドライン型のものでできればpidかプロセス名でフィルタをかけられるものはないでしょうか。



662 名前:デフォルトの名無しさん mailto:sage [2007/06/03(日) 14:15:40 ]
そのぐらい自分で作れよ。

663 名前:デフォルトの名無しさん mailto:sage [2007/06/03(日) 17:33:21 ]
DBGMONってのがあるけど
ノートンか何かの影響か何も表示できないw
確実にOutputDebugStringが追えるのはMSDNのlodprof32だけ。

664 名前:デフォルトの名無しさん mailto:sage [2007/06/03(日) 18:27:33 ]
>>661
基本ツールだろ
ttp://www.microsoft.com/technet/sysinternals/utilities/debugview.mspx


665 名前:デフォルトの名無しさん mailto:sage [2007/06/03(日) 18:34:24 ]
それGUIやんけ

666 名前:デフォルトの名無しさん mailto:sage [2007/06/03(日) 22:00:04 ]
シェアウェアで何かあった気がするな。

667 名前:デフォルトの名無しさん mailto:sage [2007/06/03(日) 23:14:57 ]
サンプルソースにあるんだから、好みで作ればいい

668 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 00:45:57 ]
ちょっとどのスレに書いて良いのか謎だったので、不適切なら誘導お願いします。

WIN32APIの学習をしているのですが、TextOutに放り込む文字数の取得方法関連でMSDN見たら、lstrlenはStringCchLengthに変えた方が良いよ、というので
strsafe.hをincludeして書き換えてみたのですが、そのstrsafe.hが原因でwarning C4996を吐きます。

このwarningを消す方法として、無視するか_CRT_SECURE_NO_DEPRECATEする他に何か無いでしょうか。
#普通にlstrlen使うのが一番"まとも"な気もしますが、一応学習ということで……

環境はVC++EE2005です。


ちなみに数時間格闘してみたところ、どうやらDirectX SDK(Microsoft DirectX SDK (April 2007))のstrsafe.h使ったときにはwarningが発生して、
Platform SDK(Microsoft Platform SDK for Windows Server 2003 SP1)のstrsafeを使ったときには発生しない、とか割とどうでもよさそうなことは分かったのですが……


669 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 00:50:55 ]
> このwarningを消す方法として
警告が出てるって事は、lstrlen とか strlen とか古い文字列関数が他に使われてるってことだべ?

全部置き換えれ。

670 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 00:54:52 ]
ir9.jp/prog/ayu/strsafe.htm
> そんな時は STRSAFE_NO_DEPRECATE を、#include <strsafe.h> の前に定義してあげると、
> 従来の関数も同時に使用できるようになります

671 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 01:59:52 ]
>>669
書き方が悪かったですね。warningの詳細も貼り付け忘れていましたし。本当に申し訳ない。
自分の書いているソースには古い文字列関数は一切使われてはいなく(むしろlstrlenすらStringCchLengthに置き換えようとしている)
どうやらstrsafe(が参照しているstdio.h)からwarningが出ているみたいなのです。多分それでPlatform側のstrsafeを使うとWarningが出なくなるわけですね。

c:\program files\microsoft directx sdk (april 2007)\include\strsafe.h(5595) : warning C4996: '_vsnprintf':
This function or variable may be unsafe. Consider using _vsnprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
c:\program files\microsoft visual studio 8\vc\include\stdio.h(339) : '_vsnprintf' の宣言を確認してください。
SDKのパスはデフォルトです。 行数の違う同じ内容のWarningが全部で4つ出ます。

>>670
えぇっと……
> このwarningを消す方法として、無視するか_CRT_SECURE_NO_DEPRECATEする他に何か無いでしょうか。
ということで申し訳ありません。Warning消しとしては正しい方法なのですが、セキュリティを高めるためにわざわざstrsafeしているのに、逆方向のオプション付け足すのもアレなので……



672 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 03:10:38 ]
何か勘違いしてるんじゃない?
そのWarningが、どの関数で出たのか、もう一度よーくチェックしてごらん
つーか、ソース貼ればいいのに・・・

673 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 03:52:45 ]
>>671
strsafe.h って何者か、ちゃんと分かって使ってる?
その前に、警告メッセージちゃんと読んでる??

メッセージの内容そのまま、*_s 系の関数使えばいいだけじゃないの?

674 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 04:21:07 ]
sprintf周りが抜けてるんだろうなあ

675 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 08:20:54 ]
>>671
それ<strsafe.h>関係ない

Visual C++ 2005のCRTのセキュリティ強化 
msdn2.microsoft.com/ja-jp/library/8ef0s5kh(VS.80).aspx
CRT関数のセキュリティが強化されたバージョン 
msdn2.microsoft.com/ja-jp/library/wd3wzwts(VS.80).aspx

676 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 10:25:48 ]
>>671
Warningに書いてあるやんけ。おまいの目は尻に付いてるのか?


677 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 10:38:22 ]
metokoumon

678 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 11:04:05 ]
>>676
フォーラムにもそれ風なことがあったお
forums.microsoft.com/MSDN-JA/ShowPost.aspx?PostID=1512292&SiteID=7

679 名前:619 mailto:sage [2007/06/04(月) 15:17:29 ]
お返事が遅くなりまして申し訳ございません。
今までの環境が使えなくなったので別環境に移ったところ、
(4)でFALSE, その後のGetLastError()でERROR_IO_PENDINGとなりました。

>>622
VisutalStudio2003, IE6.0となります。

>>623
これにしてみましたが変化はありません

以上、恐れ入りますがよろしくお願い致します

680 名前:619 mailto:sage [2007/06/04(月) 15:19:31 ]
>今までの環境が使えなくなったので別環境に移ったところ、
>(4)でFALSE, その後のGetLastError()でERROR_IO_PENDINGとなりました。

これは元からのようでした・・・大変失礼いたしました

681 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 17:16:39 ]
>>680
>今までの環境が使えなくなったので別環境に移ったところ、
>(4)でFALSE, その後のGetLastError()でERROR_IO_PENDINGとなりました。

ちなみに、非同期側の処理(スレッド)とか、うまく終了してる?
開放してないフローとか考えられない?




682 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 18:28:52 ]
Vistaでログオン直後に画面にかぶさってる「ようこそ」とか「デスクトップの準備をしています...」の画面が
消えるタイミングって何らかの方法で取得できるんでしょうか?
スタートアップに登録するアプリのスプラッシュ画面が見事に隠されてしまって何とかしたいんですが・・・

683 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 18:37:34 ]
作者のオナニーなんて見たくないからいらんモノを出すな。

684 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 18:38:23 ]
>>682
とうぜんシェル(エクスプローラ、、、タスクバーね)が起動するから
それを監視しては?

685 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 18:42:17 ]
もちろんそこでスプラッシュを出すにしても、
やるべきことは、それ以前に終わらせておけよ

686 名前:682 mailto:sage [2007/06/04(月) 19:13:32 ]
事故レス。
LogonUI.exeが存在しているかを判定することで一応解決。
正確にはスプラッシュではなく、飾りとかじゃなくて表示が必須というものだった次第。

>>684
基本的にそういうものの起動が裏で行われている状態なのでそっちの監視だと不可。


687 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 19:35:01 ]
あほだなあ
ウィンドウが可視状態かみてればいいのに

688 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 19:49:30 ]
>>687
686じゃないが、あの状態ってウィンドウステーションかデスクトップも別物になってないか?
列挙かけてみたことあるけどどうも検索不可属性が付いてるのが出てこなかったが・・・

ということでWindowFromPointとかIsWindowVisibleからの切り込みはダメっぽいよ


689 名前:688 mailto:sage [2007/06/04(月) 19:51:00 ]
×付いてるのが
○付いてるのか

ちなみにOpenInputDesktopでも普通にwinsta0\defaultになってた。

690 名前:668 mailto:sage [2007/06/04(月) 20:52:02 ]
わふ。とりあえずソース貼ってなかったのがダメすぎたっぽいので貼ります。すみません。
s-io.net/up/1/_/jump/1180957523712070.8VJMzU
pass: API

Warningは読んでいますし、提示してくださったリンクは(ありがとうございます)既に全て目を通していましたし、
目も尻にはついていません。
#節穴かもしれませんし、脳みそはスポンジかもしれませんが……

トラブルの内容としては>>678と一緒だとは思うのですが、最新のDirectXのstrsafeで発生する(PlatformSDKでは発生しない)ことから、
PlatformSDKのバージョンを上げる、というのも解決策にはならないみたいです。

#Warningの詳細やらソースコードやら貼らずに分かりにくい説明していて本当に申し訳ないです。でも、DirectXのstrsafeでコンパイルせずに、warningなんて出ないじゃないかボケ、というのは勘弁してください。


691 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 23:27:41 ]
WebサーバからSSL証明書をダウンロードして検証したいと思います。

(1)WebサーバからSSL証明書をダウンロードする
(2)それを検証する

といったようなAPIは無いでしょうか?



692 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 23:28:40 ]
ありません

693 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 23:39:16 ]
CryptoAPIがとっても面倒だった記憶があるけど。

694 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 23:42:09 ]
>>690
だから、673,675が書いてくれた事が正解なんだって。
strsafeってのが何の役割を果たすかを理解しる。

どーせ/GS入れてるんだろw。


695 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 00:11:04 ]
Visual C++ 2005は、CRT関数のセキュリティ強化版を“<strsafe.h>とは無関係に”用意している。
(これは次期Cへの提案されている事項でもあるが今はどうでもいい)
このセキュリティ強化版の関数は、基の関数名に_sを付けた名前になっている。
例: scanf→scanf_s

_CRT_SECURE_NO_WARNINGSを定義していない状態で、従来の関数を使うとC4996になる。
(ただし、C4996自体は、<strsafe.h>などこれ以外でも使われている汎用的な警告)

<strsafe.h>とCRTセキュリティ強化、はたまたそれ以外の手段の中からどれを使うかはお前が決めること。
利点欠点を好きに考えて選べ。

696 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 01:36:39 ]
じゃstd::stringという事で

697 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 01:55:52 ]
速度でないじゃん

698 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 01:57:23 ]
文字列操作はコストが高いんだから、速度が欲しけりゃ自前でやるんだな。

699 名前:668 mailto:sage [2007/06/05(火) 02:06:53 ]
うー。了解です。この構成でWarning消すとか、無駄なところに労力注ぐの止めて、別の構成にすることにします。
アドバイスをくれた皆様、どうもありがとうございました。
#学習が第一義なので、とりあえずこれでこの問題はオシマイですけれど……

>>696-697
……一応std::string版のコードも書いちゃったのですけれどね。


700 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 07:53:33 ]
jpegのファイルサイズを先頭500バイトあたりで知ることは
できますか?

701 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 07:58:13 ]
ファイルサイズなら GetFileSize なりなんなりで。



702 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 08:00:29 ]
失礼しました。ファイルサイズじゃなくて、ストリームで呼んでいるときの
jpegのサイズです。

703 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 08:03:45 ]
JPEG フォーマット
siisise.net/jpeg.html

704 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 08:07:38 ]
JPEGフォーマットの詳細を聞いているのではなく、先頭500バイト
あたりまでよんで、サイズを確定可能かが知りたいです。

705 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 08:13:56 ]
フォーマットの詳細を見て自分のやりたいことが出来るか判断しろよ。

706 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 08:42:42 ]
わからない人、答えたくない人は黙ってくれてればいいです。

707 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 09:36:14 ]
無理だよ

708 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 09:46:48 ]
そもそもWinAPIと無関係。

709 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 09:53:54 ]
>>704
正直に言えよ、そのリンク先では難しすぎて自分ではわかりませんでした、と

710 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 10:40:45 ]
>>704
結論:不可能
理由:可変長レコード(500バイト以上もおk)があるため

711 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 10:42:58 ]
>>704 釣り乙



712 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 10:48:28 ]
>>704
結論:不可能
理由:あなたは、まだ、その域に達していない

713 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 10:57:49 ]
だな、たとえ可能でもお前には無理

714 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 11:03:34 ]
起動中のIEのスクロールバーの情報(最大値や最小値、現在の位置)をWin32APIで取得する方法ってありませんか。
GetScrollPosやGetScrollRangeで取得できないようなので、それ以外の方法で取得する方法はあるのでしょうか。

715 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 11:14:19 ]
>>714
取得出来ないようなのでってお前・・・。出来るよ普通に。

716 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 11:17:33 ]
>>702
ストリームで何を呼んでるの?
jpegをハンドリングする関数か何か?
だとしたら、そいつがサイズを知っているんじゃないの?

717 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 11:18:42 ]
>>710>>711
不可能じゃないっしょ。jpegデータが500バイト以下なら。


718 名前:714 mailto:sage [2007/06/05(火) 11:19:46 ]
>>715
マジデスカ。
IEのHWNDとSB_VERTをGetScrollPosに渡せば取得できるということですよね?

719 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 11:22:19 ]
>>718
お前の脳味噌には親ウインドウとか子ウインドウとかの概念はないのか?

720 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 11:26:47 ]
次は子ウィンドウのハンドルの取得方法でも聞いてくるかな

721 名前:714 mailto:sage [2007/06/05(火) 11:26:54 ]
>>719
InternetExplorer_ServerクラスのHWNDを指定してGetScrollPosを呼び出しても取得できないのですが、指定先が間違っていますかね?



722 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 11:31:27 ]
>>721
お前は人の話を聞いているふりだけして、実際は何も聞かないタイプだろ。

723 名前:714 mailto:sage [2007/06/05(火) 11:34:16 ]
>>722
えぇ。確かにそういう人間かもしれません。

724 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 11:57:22 ]
>>722
そういう人間、俺の周りにもわんさか要るわww

725 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 11:59:06 ]
自分のことかな?と最近気づいた

726 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 12:01:34 ]
居るわ

727 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 12:22:39 ]
>>717
マーカーを読みつつパースしながら、運良く APP0 が捕まれば確定&読み込み終了
読み込みバイト数が 500 を超えたら未確定終了
こうするしかないよねぇ

728 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 12:30:08 ]
一応書いてやってみるが
IEブラウザコントロールのスクロールバーはウィンドウ本体の付属オブジェクトじゃなくて子ウィンドウなんだな?

729 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 12:37:32 ]
IEのバージョンは?

730 名前:714 mailto:sage [2007/06/05(火) 12:50:13 ]
>>728
ありがとうございます。
私は子ウインドウだと認識しています。

>>729
IE6です。

COMを使えば比較的簡単に実現可能なのですが、事情により今回はCOMなしで実現したいと思っています。

731 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 12:55:10 ]
DeviceCapabilitiesで特定のプリンタ名を渡したときだけ動作をしないような。。。

ネットワークプリンタで「マシン名\プリンタ共有名」の場合は動くのだが、
「自動 プリンタ名(マシン名 上)」というプリンタ名を渡したときは動作をしない。

名前がおかしいのかなぁ。。。



732 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 15:09:48 ]
>>731
kwsk

733 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 16:06:23 ]
DVD-RAMからタスクトレイに常駐するアプリを起動。
DVD-RAMを取り出す。
XPを終了。

DVD-RAM入れろって出るんですけど、起動元のEXEファイルが無くても、
何も出さずにXPを終了させる方法ってありますか?

734 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 16:08:08 ]
>>733
ファイルコピー

735 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 16:35:50 ]
リンカオプションで「メディア抜いても起動を続けられるようにする」ってのはあるけど、
どっちみちWindows再起動されたらだめぽ

736 名前:733 mailto:sage [2007/06/05(火) 16:54:21 ]
>>734
ファイルコピーしないでやりたいのですけど。

>>735
そんなのあるんですか。 再起動時はEXEは起動してなくて構わないので。
それで出来そうです。 ありがとうございました。
ちょっと733は判りにくくて申し訳なかったです。
「XPを終了させようとすると、DVD-RAMを入れろって出ますです。」

737 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 17:01:28 ]
/SWAPRUN:CD か。

738 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 21:07:00 ]
なんか1文字入力するたびに、SendMessageBox(hEdit, EM_LINEINDEX, 2, 0);で、3行目の
インデックスを表示させているのですが、2回に1回"-1"が返ってきます。
20→-1→22→-1→23→・・・
3行目以降に文字を入力した場合は
23→-1→23→-1→23→・・・
のように動作します。-1は3行目がない場合に返す値だと思うのですが、
それ以外の場合でも-1を返すような事はありえるのでしょうか?

739 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 21:23:41 ]
2回に1回は確実にそういう順番ではなく、大体の割合です。-1が2回続けて返ることもあれば、
通常の値が2回続けて、返ることもあります。ただ、ゆっくりと入力すれば必ず-1と正常な値が交互に返ってきます。
一体何が起きているのかさっぱり分かりません。助けてくだしあ・・・

740 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 21:32:48 ]
ちなみに今調べてみたところ、どうやらhEditというコントロールにおいてだけこのような現象が起きています。
hEditは、あるエディットコントロールに文字が入力された場合、そのエディットコントロールの文字を表示するといった動作をします。
表示はGetWindowTextとSetWindowTextで行われます。もしかしたらSetWindowTextで再描画する瞬間に
EM_LINEINDEXで行数を調べてるから-1が返って来てるのかな?とか思って排他制御したのですが、やはり-1が返ってきます。
というか、デッドロックも起きたり起きなかったり。

741 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 21:34:02 ]
ひとつのファイルを、二つのプロセスからMoveFile()で、名前を変更しようとします。

プロセスA -> MoveFile("hoge", "XXX")
プロセスB -> MoveFile("hoge", "YYY")

当然片方のプロセスは失敗すると思ったのだけど、両方リターン値が成功で帰ってくるときがあります。
(リターン値が成功で帰ってくるけど、実際は片方は失敗してる)

二つのプロセスで、ひとつのファイルを取り合うのにこういう方法って、使えないんですかね?
それとも、コードの書き方がどこかおかしいとか。





742 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 21:45:30 ]
質問です。あるエディットコントロール内で例えば、"aaaaaaaaaaaあああああああああ"と入力します。
すると、ある程度の長さになると"a"と"あ"の間で改行されます(実際は\nは入っていなくて、表示上改行されてるだけ)。
これは仕様なのでしょうか?このように勝手に改行されないようにするにはどうすればいいのでしょうか?

743 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 21:48:36 ]
WM_なんとか

744 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 21:52:16 ]
>>742
英単語の途中で改行されないようになっている。
EM_SETWORDBREAKPROCでコールバック関数を登録すれば
自分で好きなように変更可能。

745 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 22:16:10 ]
>>741
プロセスAのMoveFileが完了する前に、
プロセスBのMoveFileが走るんでしょ?

Mutexを使って管理すればいいんじゃない?

746 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 22:17:37 ]
>>738-740
ソースあげ

747 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 22:18:11 ]
>>744
ありがとうございます。とりあえずエディットコントロールは複数あるのですが、
そのうちの一つは自動で改行されないようになりました。全てのエディットコントロールで
自動改行をされないようにするには、全てのエディットコントロールをサブクラス化して
WM_CHARを捕まえないといけないのでしょうか?

748 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 22:19:17 ]
>>746
1500行くらいあるので要点を簡略化してUPします。
その作業をするのでもう少し待ってください。

749 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 22:30:19 ]
簡略化したら治っちゃたりするんだなーこれが

750 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 22:41:43 ]
>>742
スクロールバーつければいいだけかも

751 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 23:04:20 ]
>>749
簡略化してる途中に治りました。原因は、等幅フォントを使用してないことにありました。
3行目までの文字をカウントし、2行+1バイトを他のエディットコントロールに送っていたのですが、
時々2行しか送られない事があるせいで-1が返ってきてたようです。2行+5バイトくらいにしたら正常に動作しました。

>>750
インターフェイスの仕様上、スクロールバーはつけないようにしています。
そのせいでエラーの原因に気付きにくい状態が生まれてしまったのですが・・・。



752 名前:749 mailto:sage [2007/06/05(火) 23:11:45 ]
>>751
だろw

753 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 23:14:18 ]
>>751
バカスw

754 名前:749 mailto:sage [2007/06/06(水) 00:03:36 ]
ま、早とちりは誰にでもある。
元気だせw

755 名前:747 mailto:sage [2007/06/06(水) 00:15:21 ]
どうやらWM_CHARの時にいちいちSendMessageしなくても、
WM_CREATEの時に一回SendMessageするだけでいいみたいですね。
随分時間を取られてしまった・・・orz

756 名前:デフォルトの名無しさん mailto:sage [2007/06/06(水) 05:37:31 ]
IWebBrowser2::Navigate2で存在しないURLに移動しようとしたときに
'xxx'が見つかりません。パスまたはインターネット アドレスが正しいかどうかを確認してください。
というエラーのメッセージボックスが出ます。これを抑制する方法はないでしょうか。
このメッセージボックスはDWebBrowserEvents2::OnBeforeNavigate2が呼びだされる前に出て来ます。


757 名前:デフォルトの名無しさん mailto:sage [2007/06/06(水) 05:59:31 ]
なぜ存在しないURLに行きたいの

758 名前:デフォルトの名無しさん [2007/06/06(水) 06:11:12 ]
ウインドウズマシンって、
目覚まし時計みたいに、あらかじめ決められた時間に起動するように設定するとかってできるのですか?
それと、usbバスに今、抜き差しが行われたって情報を確認することってできるのでしょうか?
それは原理的に無理なのでしょうか?

759 名前:デフォルトの名無しさん [2007/06/06(水) 06:28:49 ]
detail.chiebukuro.yahoo.co.jp/qa/question_detail.php?qid=119795641
一つ目の質問は調べたら分かってのでいいです。
スンマソン。

760 名前:デフォルトの名無しさん mailto:sage [2007/06/06(水) 06:39:49 ]
>>757
移動できない時に代替処理をしたいのですが、
イベント通知や関数から戻るより先に強制的にメッセージボックスが出ているのが困るのです。


761 名前:デフォルトの名無しさん mailto:sage [2007/06/06(水) 08:11:46 ]
移動する前に存在するか調べればいい



762 名前:デフォルトの名無しさん mailto:sage [2007/06/06(水) 08:25:41 ]
>>756
IWebBrowser2::SilentにVARIANT_TRUEは?

763 名前:デフォルトの名無しさん mailto:sage [2007/06/06(水) 09:42:44 ]
>>758
RegisterDeviceNotification

764 名前:デフォルトの名無しさん mailto:sage [2007/06/06(水) 09:44:27 ]
>目覚まし時計みたいに、あらかじめ決められた時間に起動するように設定するとかってできるのですか?
コンパネ-タスク or at

765 名前:デフォルトの名無しさん [2007/06/06(水) 10:45:08 ]
>>763
>>764
ありがトン。

766 名前:デフォルトの名無しさん mailto:sage [2007/06/06(水) 10:59:54 ]
OSの起動じゃないのか

767 名前:デフォルトの名無しさん [2007/06/06(水) 11:09:38 ]
いや、そうなんですけど、
それは、基本的にできないとわかったので良いです。
とりあえず、情報を教えてくれたと言う気持ち自体に感謝しとるわけです。

768 名前:デフォルトの名無しさん mailto:sage [2007/06/06(水) 11:24:07 ]
BIOSが対応していれば出来るけど?

769 名前:デフォルトの名無しさん [2007/06/06(水) 12:14:56 ]
マジっすか?
バイオスにプログムから指示を出すんですか?

770 名前:デフォルトの名無しさん mailto:sage [2007/06/06(水) 12:20:36 ]
>>768をどう読めばそうなるんだよ

771 名前:デフォルトの名無しさん [2007/06/06(水) 12:25:46 ]
ああ、なるほど、意味分かったです。

そう言うマシンがあるってことですね。
確かに聞いたことはあります。



772 名前:デフォルトの名無しさん mailto:sage [2007/06/06(水) 12:33:52 ]
APIでアクティブタイマを設定するだけ。
あとはBIOSが対応していれば指定した時間に起動する。

773 名前:デフォルトの名無しさん mailto:sage [2007/06/06(水) 12:55:53 ]
BIOS側でしか起動時間を変更出来ないハードウェアのために
スケジュールを変更するGUIを作りたいのですが
WindowsOS上のプログラムからBIOSの設定変更は可能ですか?



774 名前:デフォルトの名無しさん mailto:sage [2007/06/06(水) 13:06:07 ]
可能ですがやり方や設定位置はマザーボードによって異なります。
詳細は各メーカに問い合わせてください。

775 名前:デフォルトの名無しさん mailto:sage [2007/06/06(水) 13:27:14 ]
メーカーによってAPIが異なることはありますか?

776 名前:デフォルトの名無しさん mailto:sage [2007/06/06(水) 13:33:47 ]
詳細は各メーカに問い合わせてください。

777 名前:デフォルトの名無しさん [2007/06/06(水) 13:33:55 ]
>>775
APIはウインドウズなんだから、
ウインドウズosであれば変わらないと考えても良いんじゃないですか?

なるほど。
基本的にはバイオスがアクティブタイマーを監視するようであれば、
プログラムからタイマーを設定すればよくて、
そうでない、場合は各種のバイオス次第と言うわけなんですね。


778 名前:デフォルトの名無しさん mailto:sage [2007/06/06(水) 13:38:38 ]
APIはウィンドウズなんでしたか・・・
本当にありがとうございました

779 名前:デフォルトの名無しさん [2007/06/06(水) 15:29:05 ]
>>778
winのバージョンで使えなかったり動作が違う事はあるけどなー


780 名前:デフォルトの名無しさん mailto:sage [2007/06/06(水) 15:56:46 ]
スルーしろよ

781 名前:691 mailto:sage [2007/06/06(水) 17:03:25 ]
>>692
ないですか・・・
>>693
情報ありがとうございます。

(1)はWindowsAPIではどうも難しそうですね。(2)はCryptoAPIでできるかもしれませんが。
(1)はOpenSSLでなんとかならないか調査してみます。



782 名前:デフォルトの名無しさん [2007/06/06(水) 20:22:51 ]
editcontrolにautocompleteを付けたんですが
そのsuggestのドロップダウンが出たタイミングはどうやったら知ることができますか?
WM_NOTIFYとか親に来るのかと思ったけどどうも来ないみたいです

783 名前:デフォルトの名無しさん mailto:sage [2007/06/06(水) 20:46:18 ]
>>745
昔、PerlでCGIを書いたときは、ファイルのリネームで排他処理ができたから、
windowsでも、同じようにできるかなって思ったんだけど、Linuxなんかとは、動作が違うってことなんかなぁ。

VBからAPIを読んでるから、もしかしたらそのせいかもしれないかなと思ったけど、検証がめんどうだから
MoveFileのあとに、ファイルをオープンして、成功したら、リネーム成功ってことにしました。

784 名前:デフォルトの名無しさん mailto:sage [2007/06/06(水) 20:48:37 ]
それってMoveFile()はアトミックじゃないってこと?
なんかそれすごく嫌だな

785 名前:デフォルトの名無しさん mailto:sage [2007/06/06(水) 21:07:55 ]
WIN32APIとは違うかもしれませんが質問させてください。
CAxWindowの作成時にパワーポイントのファイルを読み込ませ表示させているのですが、何度もCAxWindowを作成、削除を繰り返していると、削除時(DestroyWindow時)にパワーポイント側のエラー(マイクロソフトにエラーデータを送信してくださいウィンドウ)が発生します。
何かエラーになる原因、もしくは、エラーウィンドウを表示させない方法を教えていただけないでしょうか。
お願いします。

786 名前:デフォルトの名無しさん mailto:sage [2007/06/06(水) 21:17:22 ]
CAxWindow付随メンバの解放する順序なんじゃね?

787 名前:785 mailto:sage [2007/06/06(水) 21:41:01 ]
申し訳ありません。
付随メンバの解放とはどうすればよいのでしょうか?

788 名前:デフォルトの名無しさん mailto:sage [2007/06/06(水) 22:10:55 ]
>>787
多分、ヒープやらなんやらの確保順と解放順がちぐはぐなんじゃね?
パワーポイント関連のオブジェクトの操作順をあらってみ?

789 名前:デフォルトの名無しさん mailto:sage [2007/06/06(水) 22:16:51 ]
PowerPoint関連オブジェクトのメソッド操作を部分的にコメント(#if 0〜#endif)してみて、
エラーがでるか調べてみたら?

790 名前:785 mailto:sage [2007/06/06(水) 22:54:14 ]
レスありがとうございます。

再現しやすいように、CAxWindowの増加、処理の簡略化を
行いました。
(CAxWindowが一つですと、作成→削除を10時間近く繰り返さないと発生しないので)
処理の流れとしては、

CAxWindowを9個ほどCreateし、表示。
      ↓
3秒間CAxWindowの親ウィンドウにPeekMessageを繰り返す。
(CAxWindowを表示させる為だけであり、
 プログラムで明示的にメッセージは投げていないです。)
      ↓
CAxWindowをすべてDestroyWindowする。

以上の流れをループで10分〜30分繰り返すと発生します。
そして、CAxWindowに対して行う処理ですが、
CreateとShowWindowとDestroyWindow以外の処理はさせていないです。
パワーポイント関連のオブジェクトはCAxWindowだけです。
IWebBrowser2も取得しておりませんし。

また、HTMLファイルを読み込ませた場合は、エラーメッセージは表示されないんですよね。
ほんとお手上げです・・・。

791 名前:デフォルトの名無しさん mailto:sage [2007/06/07(木) 00:11:10 ]
SBS_SIZEBOXとかSBS_SIZEGRIPとかって何なんですか!
ググっても日本語の解説が無くて



792 名前:デフォルトの名無しさん mailto:sage [2007/06/07(木) 00:15:31 ]
ウソ付くな。

793 名前:デフォルトの名無しさん mailto:sage [2007/06/07(木) 00:18:30 ]
思いっきりみつかるけどな

794 名前:デフォルトの名無しさん mailto:sage [2007/06/07(木) 00:36:13 ]
いや詳しい解説が無くて
どこ行っても「サイズボックスを指定する」だの「縁のあるサイズボックス」だの
その「サイズボックス」って何なの!って

795 名前:デフォルトの名無しさん mailto:sage [2007/06/07(木) 00:44:10 ]
>>794
www.google.co.jp/search?sourceid=navclient&hl=ja&ie=UTF-8&rlz=1T4GGIH_jaJP209JP210&q=%e3%82%b5%e3%82%a4%e3%82%ba%e3%83%9c%e3%83%83%e3%82%af%e3%82%b9

796 名前:デフォルトの名無しさん mailto:sage [2007/06/07(木) 00:45:38 ]
「サイズボックスとは」でググレ

797 名前:デフォルトの名無しさん mailto:sage [2007/06/07(木) 00:49:31 ]
もちろんググりましたが
「ウィンドウのサイズボックス」ではなく「スクロールバーのサイズボックス」についての解説が見たいのです!

798 名前:デフォルトの名無しさん mailto:sage [2007/06/07(木) 01:05:18 ]
実際「スクロールバーのサイズボックスだ」としか答えようがないんだが・・。
SBS_SIZEBOX指定でスクロールバー作ってみ。

799 名前:デフォルトの名無しさん mailto:sage [2007/06/07(木) 01:09:17 ]
>>798
わかりました。一応作っては見ました。が、使い方が今一わかりません
というか解説(又は画像)が無いことをちょっと不思議に思ってます
これ使われてるソフトもあまり見かけないかなー、と

800 名前:デフォルトの名無しさん mailto:sage [2007/06/07(木) 01:12:53 ]
ttp://msdn2.microsoft.com/en-us/library/ms651267.aspx
この辺に書いてなきゃ諦めな

801 名前:デフォルトの名無しさん mailto:sage [2007/06/07(木) 01:20:56 ]
そこは一番最初に見ました
が、だめ!
解説ページは諦めます



802 名前:デフォルトの名無しさん mailto:sage [2007/06/07(木) 01:24:58 ]
へ〜。こんなの初めて知った。
スクロールバーというより「サイズボックスコントロール」っていうひとつの独立したコントロールみたいな感じだな。

803 名前:デフォルトの名無しさん mailto:sage [2007/06/07(木) 06:38:05 ]
何が知りたいのかさっぱりわからん
自分の思い通りの解説が無かったら自分で書け

804 名前:デフォルトの名無しさん mailto:sage [2007/06/07(木) 07:21:27 ]
自分の読解力の無さを人の文章力のせいにするな

805 名前:デフォルトの名無しさん mailto:sage [2007/06/07(木) 08:37:15 ]
季節の変わり目だからな。最近、香ばしいのが多くて困る。

806 名前:デフォルトの名無しさん mailto:sage [2007/06/07(木) 08:56:16 ]
お前モナー

807 名前:デフォルトの名無しさん mailto:sage [2007/06/07(木) 09:22:40 ]
僕バッカー!

808 名前:691 mailto:sage [2007/06/07(木) 14:40:34 ]
HttpOpenRequest()のフラグをいろいろ変えて試してみましたが、
InternetOpen()にINTERNET_FLAG_ASYNCを付けると、
HttpSendRequest()はfalseかつERROR_IO_PENDINGになってしまうようですね。

InternetOpen()にINTERNET_FLAG_ASYNCを付けなかった場合、
HttpSendRequest()がfalseになりERROR_INTERNET_INVALID_CAを無事取得できました。

非同期にてERROR_INTERNET_INVALID_CAを取得できる方法はないでしょうか?
試行錯誤してみましたがまったく手段が見当たりません。
アドバイスお願い致しますm(_ _)m

809 名前:デフォルトの名無しさん mailto:sage [2007/06/07(木) 14:45:51 ]
非同期でERROR_IO_PENDINGは正常なんだけど

810 名前:デフォルトの名無しさん mailto:sage [2007/06/07(木) 14:56:43 ]
InternetDestroy()ってなんか恐ろしくて使ったこと無いんですけど、
使って大丈夫ですかね?

811 名前:デフォルトの名無しさん mailto:sage [2007/06/07(木) 15:10:37 ]
>>808
InternetStatusCallbackの値みてる?

msdn2.microsoft.com/en-US/library/aa383931.aspx



812 名前:691 mailto:sage [2007/06/07(木) 16:45:23 ]
>>811
レスありがとうございます。
正にこれでした!
コールバックの第四パラメータlpvStatusからERROR_INTERNET_INVALID_CAを取得できました。

本当にありがとうございましたm(_ _)m

813 名前:デフォルトの名無しさん mailto:sage [2007/06/07(木) 18:32:03 ]
ウインドウを常に手前に表示するには
SetWindowPosでHWND_TOPMOSTをあたえればできますが
そのウインドウがHWND_TOPMOSTなのかを取得するにはどうすればいいのでしょうか?

814 名前:デフォルトの名無しさん mailto:sage [2007/06/07(木) 18:35:14 ]
GetWindowLong

815 名前:813 mailto:age [2007/06/08(金) 00:05:48 ]
どなたか分かる方はいませんでしょうか?

816 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 00:10:33 ]
>>815

>>814

817 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 00:12:27 ]
>>815
馬鹿じゃねぇの
分からない方が珍しい

818 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 00:12:42 ]
>>815
間違ってたらゴメン

拡張ウィンドウスタイル(GWL_EXSTYLE)を取得して、
WS_EX_TOPMOSTを含んでるか調べるんじゃないかな?

819 名前:813 mailto:sage [2007/06/08(金) 00:19:25 ]
難しすぎて分かりません

820 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 00:22:33 ]
LONG exStyle = GetWindowLong(hWnd, GWL_EXSTYLE);
if ((exStyle & WS_EX_TOPMOST) != 0)
{
//TOPMOST
}

821 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 00:30:40 ]
WS_EX_TOPMOSTフラグではなく、お触り禁止フラグが立ちました




822 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 01:00:24 ]
>813
TOP MOSTの指定をしたのが知りたいのか?
今、ウィンドウがTOP MOSTで画面に表示されているのが知りたいのか?

後者なら、FindWindowして Z-Orderを確認するしか手がないよ。


823 名前:813 mailto:sage [2007/06/08(金) 02:53:05 ]
自己解決しました^^

824 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 02:55:49 ]
時間掛かり過ぎ(禿藁)

825 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 08:13:39 ]
どうみても他己解決

826 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 08:15:12 ]
たこちゅうちゅ

827 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 08:25:13 ]
>>823
恩知らずとはお前のことだ。

828 名前:デフォルトの名無しさん [2007/06/08(金) 08:35:34 ]
現在VC6.0でsubst相当のことをやろうとしているのですがDefineDosDeviceを
使えばできそうだというとこまではわかったのですがドライブの解除時に
そのドライブを使用していたら(エクスプローラで開いている等)
エラーメッセージを出すということをしたいのですが
探し方が悪いのかよい方法が見つかりません。

申し訳ありませんがどなたか教えていただけないでしょうか?お願いします。


829 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 09:02:36 ]
>>828
もちつけ
要約すると、メッセージが出したいのか?

830 名前:828 [2007/06/08(金) 09:07:00 ]
>>829
そうです。
DefineDosDeviceで割り当てたドライブを使用していたら
メッセージを出したいです。

831 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 09:19:28 ]
必要に応じてSetErrorMode関数
<TODO>
GetLastError関数でエラーNo
FormatMessage関数でエラーNoから日本語(地域言語)

<TODO>の箇所にDefineDosDevice関数とか、使用ユーザーほにゃほにゃ



832 名前:828 [2007/06/08(金) 09:35:23 ]
831>>
DefineDosDeviceはドライブを使用していてもエラーなしでドライブを解除してしまうみたい
なのでGetLastError関数でのやり方がわかりません。
あとSetErrorMode関数も調べてみたのですがいまいち使い方がわかりません。

どうやったらいいか詳しく教えてください。
お願いします。

833 名前:ららら [2007/06/08(金) 09:40:31 ]
COM インターフェイスのメソッドって、何で const メソッドがないのら?

834 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 09:45:37 ]
const の判断はコンパイラの仕事だから

835 名前:ららら [2007/06/08(金) 09:58:04 ]
どういうことなのら?

836 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 10:01:55 ]
あほすぎなのらw

837 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 10:05:49 ]
>>833
COM は C でも使えないといけないから。

838 名前:ららら [2007/06/08(金) 10:07:33 ]
> COM は C でも使えないといけないから
たとえば、
interface ISome {
 STDMETHOD_(size_t, GetSize)(void) PURE;
};
なら、Cでは
size_t ISome_GetSize(const ISome* some);
と書けるだろ?

839 名前:ららら mailto:sage [2007/06/08(金) 10:08:55 ]
× STDMETHOD_(size_t, GetSize)(void) PURE;
○ STDMETHOD_(size_t, GetSize)(void) const PURE;

840 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 12:01:28 ]
>>832
もうひとつの命題は
「そのドライブが、現在使用中かどうか判断」でおk?

841 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 12:21:30 ]
>>828
質問の仕方が悪いよ。

あなたが知りたいのは、
メッセージの出し方ではなく、
DefineDosDeviceした後に、当該のドライブが使用中だったのか否か判別する方法
もしくは、
DefineDosDeviceする前に、当該のドライブが使用中なのか否か判別する方法
なんでしょ?

ならば、そう書いたほうがいい。

>>829が言いたいのは、そういうことなんだと思うよ。




842 名前:828 [2007/06/08(金) 13:15:24 ]
質問の仕方が悪く申し訳ありません。
>>840さん、>>841さんの言うとおり知りたいのは
>DefineDosDeviceする前に、当該のドライブが使用中なのか否か判別する方法
です。

書き込み自体不慣れなもので迷惑をかけているとは思いますが
ご教授よろしくお願いします。

843 名前:828 [2007/06/08(金) 13:27:20 ]
知りたいことがまだわかりにくい気がするので
もう一度書かせてもらいます。

知りたいことは
DefineDosDeviceを用いて割り当てたドライブを
再びDefineDosDeviceを用いて解除する時に、
当該のドライブが使用中なのか否か判別する方法
です。

よろしくお願いします。


844 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 14:21:27 ]
>>838
C++ だと

STDMETHOD_(size_t, GetSize)(void) PURE;
STDMETHOD_(size_t, GetSize)(void) const PURE;

の2つを宣言できるけど、
C だとオーバーロードがないからこういう事ができない。

というあたりを意識してるんじゃないかな、と思ってるんだけど、
まあ、正直なところこれが理由かどうかは分からん。

845 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 14:30:34 ]
VBにconstなメソッドの概念がないからだと思う
まあCOMにconstがないからVBにconstなメソッドを入れなかったという順なのかもしれないけど

846 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 14:31:58 ]
まぁ、COM に限らず、C++ の virtual 関数は const にすべきではないように思う。
メンバ関数が const かどうかは実装に依存して決定されるべきことだが、
virtual メンバ関数がどのような実装になるかは派生クラスに依存するわけだから、
virtual メンバ関数の宣言時には const かどうかを決定できないことになる。
したがって、const メンバ関数と virtual メンバ関数は共存できないように思う。

847 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 14:32:17 ]
っつかCOM自体はOS・言語と独立。

848 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 14:36:15 ]
メンバ関数がconstにすべきかどうかは機能仕様によるだろ

実装に依存するならmutableの存在意義がない

849 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 14:37:03 ]
>>843
DeviceIoControlあたりなんかなー

誰か、ドライブ系のコントロールコマンドしりませんか?

850 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 14:42:43 ]
>>848
mutable は本来使ってはいけないもの。存在しないほうがいい。friend と同じく。

851 名前:ららら [2007/06/08(金) 14:47:20 ]
あのー、もう1つ質問なのら。
CComPtr を使うとインターフェイスの解放し忘れがない
というのは本当なのか? なのら。

たとえば、
ISome* GetSome(void);
という関数があって、これを CComPtr で受け取ろうとする場合、
CComPtr<ISome> spSome = GetSome(); や
CComPtr<ISome> spSome( GetSome() );
とすると、オブジェクトは解放されなくなるらろ?

でもこういうコードは自然に書いてしまいそうだから、コワイのらー。

GetSome 関数からも CComPtr を返せって?
でもライブラリとして与えられている関数だから、
自分ではどうにもならないのらー。



852 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 14:48:48 ]
まず日本語勉強してこい

853 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 14:50:58 ]
まことちゃん?

854 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 14:58:30 ]
静岡の東部人じゃないのか
>>851 そうら?

855 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 15:00:32 ]
山梨出身の友達もそんなしゃべり方するな。

856 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 15:05:27 ]
山梨でも、あんなしゃべり方しねーよw
853の言う通り、まことちゃんだろ。

しかし、まことちゃんを知っている奴は、確実にオッサン

857 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 15:24:31 ]
>>838
ISomeを使う側なら、constがあってもなくても同じじゃん。

858 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 15:33:06 ]
>>843
安全確実な方法はないと思う。

DefineDosDeviceのフラグに、
使用中ならばREMOVEしない
というのがないということは、
OS自体が実現方法を持っていないのだと思う。

副作用や誤判定が生じても構わないなら、
substしたディレクトリ以下にある、すべてのファイルとディレクトリに対して、
共有しないモードでCreateFileを試みて、失敗すれば誰かが使っている、と。

副作用は、CreateFileを試みて成功してしまった場合、
すぐにCloseHandleしなければならないが、その瞬間を狙って、
他のプロセスがCreateFileすると失敗してしまうこと。

誤判定は、仮想ドライブだけでなく、元のパスを使っていても、
引っかかってしまうこと。



859 名前:ららら mailto:sage [2007/06/08(金) 15:33:08 ]
>>857
何ゆーとんのら。使う側が C++ なら const であるかどうかは重要ら。
たとえば、ISome を包含するクラス CHoge を実装する場合、
ISome が const 型システムをもたないが故に、
CHoge も const 型システムを無視しなければならず、
この破壊の連鎖はどこまでも続いて行くらー。

860 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 15:33:48 ]
>>850
本来使ってはいけないものだが、
使わざるを得ない場合ってのもあるんだぜ?

861 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 15:36:24 ]
>>851
そういうコードを自然に書くくせを直すべき。Attach もあるし。

ISome* tmp = GetSome();
CComPtr<ISome> spSome = tmp;
// 以降でも tmp->Release() はしない

これでリークしないと思える筈がないわけで、1行に書いても同じこと。
でもまぁ MFC みたいに ctor で AddRef しないオプションも、あれば便利だったかもね。



862 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 15:36:25 ]
>>846
おいおい。本気で言ってるのか?

863 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 15:36:42 ]
>>860
それは分かるが、const_cast で代用できる。

864 名前:846 [2007/06/08(金) 15:38:15 ]
>>862
本気だが?


865 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 15:39:56 ]
「本気」と書いて「マジ」と読む

866 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 15:41:02 ]
>>859
単にCOMのシンタックス上非 const になってるだけで
セマンティックス的には const な動作ならば、
適宜 const_cast 使えばいいと思うけど。
そのための const_cast でそ。

盲目的に「変更するから非 const」とか考えてると、
AddRef ひとつ呼べやしない。

867 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 15:42:16 ]
>>863
mutable だと宣言する事と、
const_cast を使う事は、
表している意味合いとか読みやすさとかが変わってくるな。

どちらにしろ、使わざるを得ない状況自体が稀だが・・・。

868 名前:ららら mailto:sage [2007/06/08(金) 15:47:11 ]
>>866
結論!
COM は C++ と相性が悪い!
のらー。

>> 845
> VBにconstなメソッドの概念がないからだと思う
COM と IDispatch を混同してはいかんのらー。
COM は VB のためのものではないのらー。

869 名前:828 [2007/06/08(金) 16:13:14 ]
>>849,>>858
ありがとうございました。
実現が難しそうだということがわかりましたので
もう少し自分で考えた後、突破口が見つからなければあきらめたいと思います。



870 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 16:38:43 ]
>>869
Windowsって、ファイルを開いたときに渡したパスを、覚えてないんだよね。

部屋の中に人がいるかどうかしか管理してなくて、
どの入り口から入ってきたのかは、ノーケアなんだ。

ファイルのハンドルから、ファイル名を知りたくて色々調べたけど、解決方法はなかった。
裏APIを使えば、オブジェクトの名前はわかるようなんだけど、ファイル名とは違うんだよね。

いっそのこと全プロセスに対してCreateProcessをフックしてしまい、
ハンドルに対するCreateFile時のファイル名を管理してしまおうかとも思ったけど、
そんな行儀の悪いことをするのはダメだよねぇ、ってことで諦めた。

871 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 16:56:05 ]
870のいう通りなら、
当該のドライブが使用中に、その解除作業やっても問題ないんじゃないか?
だから「ドライブを使用していてもエラーなしでドライブを解除してしまう」のでは?

これは想像だけど、ファイルを開くときにSubstされたドライブの場合、
正しいディスクのパスに変換してからファイルを開く、ぐらいの処理やっててもおかしくないと思うんだがな。



872 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 17:21:17 ]
>>871
たぶんフィルタドライバを使って実現されていると思われ。



873 名前:869 [2007/06/08(金) 18:32:09 ]
>>870
>>871
>>872
ありがとうございます。参考になりました

874 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 23:39:23 ]
すいません、質問です。

WinXPにてsend,recvを使ってバイナリデータを送受信したいのですが、
バッファの大きさの上限(要するに、一回のsendや一回のrecvで送受信できるデータ量の上限)って、
何バイトでしょうか??


また、もし上限が無いのでしたら、
例えば1GByte程のデータを送受信する場合、
バッファサイズはどのぐらいが効率的なのでしょうか??

ご教授御願いいたしますm(。−_−。)m

875 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 23:47:22 ]
>>874
WinScokのヘルプにバッファの設定について書いてあるんだから、
最低限確認してからにしろよ。

876 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 00:38:16 ]
>>874
なんつーか、そもそもTCP/IPはバッファを大きくしてもそれだけの大きさをそのまま扱えるわけじゃないことも
ご存知ないような。入門サイトでじっくりお勉強することをお勧めするですよ。

877 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 01:04:06 ]
>>874
マジレスしたらここに聞きにくる以前の問題すぎて笑った

878 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 01:55:50 ]
質問です。
CreateCaretでシステムキャレット(長方形型)を使わせていただいていますが
ウィンドウのステータスバーの上に被さって表示されてしまいます。
また、DrawEdgeで描いたウィンドウ内枠も上書きしてしまいます。
システムにお借りしたキャレットは描画のクリッピングなどはできないのでしょうか
お聞かせください。

879 名前:878 mailto:sage [2007/06/09(土) 01:58:46 ]
要するにエディタ等のウィンドウをスクロールした際の
キャレットが隠れるように見える挙動を実現したいのです。

880 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 11:19:01 ]
ウィンドウをスクロールして、
キャレットが隠れなければならないタイミングで、
HideCaret を呼べばいいのでは。

881 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 12:17:40 ]
【政治】民主党、無年金障害者問題で法案提出 在日外国人らも救済

民主党は9日、国民年金の対象外か、任意加入の時期に未加入だったため、
障害基礎年金をもらえない無年金障害者すべてに
「障害福祉年金」を支給する法案を衆院に提出した。
今国会に与党が提出を予定している案では、
救済対象を元学生と専業主婦に限っているが、
民主党案は在日外国人や在外邦人も救済する手厚い内容だ。

給付額は、与党案では障害基礎年金の約6割にあたる月4万〜5万円だが、
民主党案は障害基礎年金と同額としている。

(06/09)朝日新聞
www.asahi.com/money/pension/news/TKY200406090286.html



882 名前:878 mailto:sage [2007/06/09(土) 16:11:21 ]
>>880
手持ちの例で言えば↓このバイナリエディタStirlingのように
ttp://www.vector.co.jp/soft/win95/util/se079072.html
ウィンドウサイズを変更してキャレット上をステータスバーが覆うと
欠けたキャレットが点滅し続ける、このような挙動はどのように実現されているのか?ということです。

883 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 16:16:37 ]
テキストエディタ(バイナリもそうだけど)系の奴って、
キャレットは自前描画するもんなんじゃなかったっけ?
WM_TIMERつかまえて点滅、とか

884 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 16:20:01 ]
君のハートを捕まえて

885 名前:878 mailto:sage [2007/06/09(土) 16:27:03 ]
>>883
そうなんですか。
同じくバイナリエディタの例で申し訳ないのですが↓のBZなんかは
ttp://www.vector.co.jp/soft/win95/util/se032859.html
>>882のようなステータスバーがキャレット上を覆う時は
シンプルにも完全にキャレットを非表示にする隠す挙動になっています。

886 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 16:41:26 ]
?どっちも同じじゃない?

887 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 16:43:33 ]
>>885
ああごめんごめん、全部がそうってわけじゃないよ

でも、あれ。俺はスターリンもBZも持ってんだけど、
試してみたらどっちも、キャレット一部が隠れてもちゃんと残りの一部が点滅してるな・・
バージョンが違うのかな?

888 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 16:46:58 ]
バージョンが違いますね

889 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 16:50:51 ]
そうですか、すんませんです

890 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 18:57:44 ]
>>878
キャレットを所持するウィンドウとステータスバーの領域が重なってるんじゃないか?
StirlingとBZもCreateCaretを使っている

891 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 20:05:43 ]
フォルダの上で中央クリックしたら
フォルダを新しいウインドウで開く
ってのをできるソフトないかな?



892 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 20:07:43 ]
ソフトウェア板に行ってね

893 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 20:16:25 ]
>>891
それぐらい自分で作れカス

894 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 20:48:42 ]
実行ファイルのアイコンについてですが、WindowsXPのアイコンの表示方法には色々あると思います。
縮小版、並べて表示、一覧・・・
これらに対応して、違ったサイズのアイコンを表示したいのですが、どのようにすればいいのでしょうか?

895 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 20:52:26 ]
アイコンは各種サイズを格納してる?

896 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 21:00:03 ]
一応48*48と32*32のアイコンをリソースに取り込んでます。
一番数字が若いやつが実行ファイルのアイコンになるっぽいので、48*48が標準で表示されています。
まぁ、どういう表示にしても48*48が表示されるのですが、これをなんとか・・・

897 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 21:01:20 ]
指定しろよ

898 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 21:03:52 ]
>>896
その2つが別のアイコンとして扱われているのでは?
Windowsでは1つのアイコンファイルやリソースが複数の大きさ・色数のアイコンを保持できる

899 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 21:07:23 ]
どうやって指定するのでしょうか・・・(汗
VS2005を使用しているのですが、リソースビューでは特にいじる場所も見当たらなさそうな・・・

900 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 21:09:38 ]
>>898
そうなんですか。ということは、今は2つのicoファイルが独立したリソースになってるって事ですね。
ちょっと色々試してみます。

901 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 21:11:04 ]
>>899
なんだ、VSかい。EEじゃないよね?
アイコンエディットしてるときに、いろいろメニューさがしてみそ



902 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 21:16:08 ]
アイコンは、専用のソフトで一つの.icoにまとめてから、それを
リソースとしてそのまま取り込むのが楽。

アイコンをまとめるソフトはフリーのやつでもわんさかあるから適当に選んで使うがよろし
ちなみに俺は@iconってのを使ってる

903 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 21:17:14 ]
@icon変換 とかで(ものはなんでもいいけど)ひとつのicoファイルが複数の
サイズの違う画像を持つようするといいんじゃないかな

904 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 21:19:13 ]
>>901
Visual Studio 2005です。リソースの追加>インポートを2回繰り返して2つのicoファイルを読み込んだのですが、
それではいけないんですよね・・・。色々メニュー見てみたり、右クリックしてみたりしたのですが
いまいちどこでそういう変更が出来るのかまだわからないです・・・orz

905 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 21:19:56 ]
>>902-903
ちょっと@iconを落としてきます!

906 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 21:25:27 ]
@iconでマルチ画像保存したら出来ましたああああ;;
ありがとうございます!

というか、icoファイルって意外と高機能なんですね・・・
jpgとかgifの感覚で一つのファイルは一つの画像だと思ってました

907 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 21:34:07 ]
なんでgifが一つなんだ?

908 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 21:37:19 ]
脳内

909 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 21:46:46 ]
あ、gifは全然一つじゃないですね。アニメーションgifとか昔自分作ってたのに・・・orz

910 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 22:55:37 ]
>>904
アイコンのエディット画面のイメージメニューだよ

911 名前:878 mailto:sage [2007/06/09(土) 22:58:18 ]
>>887
BZはどうやら1行目だけは非表示にならずキャレットが点滅表示されるようです。

>>890
つまり、クライアント領域は別の子ウィンドウを張り付けるべきですかね?
今まで親ウィンドウに直書き描画しておりましたが・・・。



912 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 00:02:25 ]
ここで聞くのが正しいか分からないけど、
VC++2005を使って「猫でも分かるプログラミング」を見て
Win32APIの勉強をしているところなのですが、
プログラムに組み込みたいビットマップ画像や音楽ファイルって
生のまま(?)配布するソフトに一緒に入れておくしかないですか?



913 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 00:12:13 ]
自分の好きなようにしろよ。

914 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 00:15:20 ]
>>913
自分の好きなようというか、
そのやり方しか知らなくて他に選択肢が無いから、
それ以外にやり方があるなら教えて下さい、という旨です。

915 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 00:16:09 ]
暗号化するなり、
1つのファイルにまとめるなり、
圧縮するなり、
リソースとして実行ファイルに埋め込むなり

好きにするなりよ

916 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 00:28:03 ]
>>914
やり方なんていくらでもある
その辺のPCゲームとか見れば、いくつか参考例もあるだろ?
あと…あんまりWin32APIには関係ないかもな

俺はzlib使って固めて、独自ファイルヘッダくっつけて、
ついでに軽い暗号化かけて、チェック用のハッシュも持たせてやってる
ファイル対象の圧縮・展開は専用ツール作って、
exeから使うときは展開ツールで利用してるクラスを使って簡単展開

917 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 00:33:52 ]
この手の質問をする奴って、やり方は分かっているのに、
思いつく方法が面倒くさくて逃げ出したいから、
他人に何とかしてもらおうとしているだけなんだよね。

918 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 00:55:22 ]
>>915
色々方法を教えて頂きありがとうございます、とても参考になりました。
まだレベルが低くて暗号化云々がアレなのでリソースとして
埋め込むという方法のやり方を調べてみます。

>>916
PC買って間もなくてプログラミング以外でほとんど使ったことが無かったので
一般的にどうするものなのか分からなかったです。
スレ違い&常識的なことを聞いていたらすいませんでした。
教えて頂いた方法はまだ技術的に追いつかないのでメモしておいて後で参考にさせて頂きます。
詳しく教えて頂きありがとうございました。

>>917
いえ、「猫でも〜」を挙げているように、まだ習い初めなのでガチでやり方が分かりませんでした。
ただ月曜が友人の誕生日で作ったプログラムを送りたくて
日程的に詰まっていたため自分で色々調べる時間が足りず、
ここで他人に何とかしてもらおうと思ったのは事実なので、
教えて君と不快に思われたらすいませんでした。

919 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 01:05:25 ]
誕生日プレゼントなら、happy99だよな

ttp://www.geocities.jp/hiko_bae/happy99.html


920 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 15:29:27 ]
すみません。質問です。
GetOpenFileNameで既存ファイルのフルパス文字列を受け取った場合、
ユーザーがキータイプしている可能性があるのでこれを統一化したいのですが良い方法はないでしょうか?
フルパス文字列をキーとして内部保存し新たにOpenされた場合は相応の処理をしたいのです。
(ちなみに実際にファイル操作をするのはLinkした外部ライブラリです。)

MBCS向けコーディングしていますが単純に_mbsnicmpをかませば大丈夫でしょうか?
パスの命名規則があいまいで確信が持てません。。。

921 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 15:37:11 ]
日本語でおk




922 名前:920 mailto:sage [2007/06/10(日) 16:04:07 ]
ああ、説明端折りすぎで意味不明でしたか。すみません
例えば、Abc.bmp、ABC.BMP、aBc.bmpなどは同じファイル(もっと長いファイル名でも)なので
GetOpenFileNameで受け取ったパスをそのまま使ってキー探索するのは危険かと思いました
で、Windowsシステムが認識しているパス名に統一する方法があればとお訊きした訳です

受け取ったパスでそのままSearchPathしてみたところ、どういう訳か入力した値そのものだったり
エクスプローラ上のファイル名に置き換えられたり動作不定です(win2000)

923 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 16:07:30 ]
> Abc.bmp、ABC.BMP、aBc.bmpなどは同じファイル
ファイルシステムによっては違うファイルなのでは?

924 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 16:09:23 ]
あなたは きょうしには むいていません。

925 名前:920 mailto:sage [2007/06/10(日) 16:23:49 ]
>>923
え゜、、そうなんですか?
少なくともNTFS上では同じファイルとして扱われてますがFATやFAT32だと違うんでしょうか

926 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 16:38:46 ]
なにを悩んでるのかがはっきりしないな。
特に
>GetOpenFileNameで受け取ったパスをそのまま使ってキー探索するのは危険かと思いました
の意味が分からない。
OPENFILENAME構造体のフラグで無効な文字や、無効なパスははじけるはず。

「危険」って何が「危険」なの?

927 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 16:40:14 ]
NTFSもVATもFAT32も大文字と小文字を区別する。
大文字小文字区別しないのは昔のファイル名が8.3のFATじゃなかったっけ?

928 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 16:49:39 ]
ファイルシステムとAPIとシェルの各層を区別しろや

929 名前:926 mailto:sage [2007/06/10(日) 16:52:53 ]
>>920
すみません。よく読んだらちゃんとわかりました。
自分の読解力不足を嘆くばかりです。

www.ipa.go.jp/security/awareness/vendor/programming/b08_01_main.html
ここを読んでおくとさらに悩めると思います。

930 名前:920 mailto:sage [2007/06/10(日) 17:08:36 ]
説明下手ですいません。かなりアホなこと訊いている気がしてきました

>>926
既にOpen済みかそうでないかを判定する手段として
Open済みのファイルのフルパスを保存し、一致検索しようと考ました
新たにOpenされたファイルなら前処理を行った後にライブラリにOpen要求を出します
GetOpenFileNameでは存在するValidなパスしか受け付けないように設定しています

>>927
不安になったので今デスクトップ上で上記3ファイルを新規作成してみましたが
最初の1個以外は同じファイル名だと怒られます(XP、NTFS)


931 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 17:17:52 ]
>>930
> 不安になったので今デスクトップ上で上記3ファイルを新規作成してみましたが
> 最初の1個以外は同じファイル名だと怒られます(XP、NTFS)
それはWindowsのファイルシステムドライバが過去の互換性に縛られるせい。



932 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 17:19:39 ]
GetVolumeInformation
ttp://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/jpfileio/html/_win32_getvolumeinformation.asp
FS_CASE_IS_PRESERVED
ファイルシステムは、ディスクにファイル名を記録するときに、大文字と小文字を区別して保存します。
FS_CASE_SENSITIVE
ファイルシステムは、ファイル名の大文字と小文字の区別をサポートしています。

933 名前:920 mailto:sage [2007/06/10(日) 17:32:51 ]
皆様、ありがとうございます
なるほど。基本的な理解が足りていなかったようです。
具体的な解決法が未だ見えませんが教えてもらった情報を元に
これから色々テストしてきます

934 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 17:36:45 ]
がんばれ

935 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 17:48:12 ]
>>920
与えられたパスをFindFirstFileに渡す。
これで大文字/小文字も含めて正確なパスが得られるよ。

俺はGetModuleFileNameで得られたパス名を修正するのに使っている。

936 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 18:15:31 ]
がんばるな

937 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 18:25:55 ]
CorrectFileNameEx

938 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 19:11:23 ]
>>937
くわしく。

939 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 19:15:53 ]
CorrectFileNameEx に一致するページは見つかりませんでした。

940 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 19:35:05 ]
次スレたてられなかった

941 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 20:09:01 ]
>>940
>980 くらいでちょうどよい。まだ、早すぎ。



942 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 20:17:01 ]
>>980に期待

943 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 20:27:30 ]
GetCanonicalFileName

944 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 21:32:03 ]
>>943
詳しく

945 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 21:38:41 ]
>>944
詳しく

946 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 21:43:09 ]
>>945
悔しく

947 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 21:54:28 ]
>>943
つまんね

948 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 22:22:49 ]
>>947
ねんまつ

949 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 23:08:34 ]
ファイルハンドルを開きっぱなしでそのファイルを削除しようとすると、
「ファイルまたはフォルダの削除エラー」がでます。
ファイルが削除されるタイミングを知ることができれば、
ファイルハンドルを解放しようと思います。
タイミングを知る方法を教えてください。

950 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 23:12:43 ]
初めから削除権与えたら駄目なん?

951 名前:949 mailto:sage [2007/06/10(日) 23:27:14 ]
>> 950
ありがとうございます。
それで行けそうです。
めちゃ助かりました!



952 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 23:28:25 ]
>>949
試したことはないけど便宜的ロックで何とかならない?
SMBとかで使ってる奴。

953 名前:デフォルトの名無しさん mailto:sage [2007/06/11(月) 06:14:19 ]
スーパーマリオブラザーズで使われているのはロックではありません。

954 名前:デフォルトの名無しさん mailto:sage [2007/06/11(月) 08:40:08 ]
DPMSで画面の電源を切るにはどうするですか?

955 名前:デフォルトの名無しさん mailto:sage [2007/06/11(月) 23:05:52 ]
>>954
KernelIoControlでIOCTL_HAL_DDIとかじゃね?

956 名前:デフォルトの名無しさん mailto:sage [2007/06/12(火) 00:02:21 ]
ochinchin.h を omanko.cpp に include したのに

957 名前:デフォルトの名無しさん mailto:sage [2007/06/12(火) 00:15:29 ]
includeはinsertじゃないよバーカ

958 名前:デフォルトの名無しさん mailto:sage [2007/06/12(火) 00:26:02 ]
僕バ(略

959 名前:デフォルトの名無しさん [2007/06/12(火) 09:33:04 ]
スレ違いかと思いますが、他に適当なスレが見当たらなかったので
ここでお伺いさせてください。

Windows2000で
Shell_NotifyIcon()でシステムトレイに表示できるアイコンは
16色らしいのですが、この16色は16種類の色なのでしょうか?
それとも決められた16色なのでしょうか?

960 名前:デフォルトの名無しさん mailto:sage [2007/06/12(火) 14:04:17 ]
2kまでシステムカラー16色限定。
XP以後フルカラー+アルファが使えるようになった。

でもMEで256色アイコンが色化け無しでトレイにあるのを見たことあるんだよな・・・

961 名前:デフォルトの名無しさん mailto:sage [2007/06/12(火) 14:06:32 ]
IEというか Comctrl32 のバージョン依存じゃね?



962 名前:デフォルトの名無しさん mailto:sage [2007/06/12(火) 14:15:44 ]
ttp://msdn2.microsoft.com/en-us/library/ms538121.aspx
hIcon
 Windows 95, Windows 98, and Microsoft Windows NT 4.0 support icons of up to 4 bits per pixel (BPP).
Windows Millennium Edition (Windows Me) and Windows 2000 support icons of a color depth up to the current display mode.
Windows XP supports icons of up to 32 BPP.

963 名前:デフォルトの名無しさん mailto:sage [2007/06/12(火) 14:57:49 ]
そのアイコンの話じゃねーんだよバーヤ

964 名前:デフォルトの名無しさん mailto:sage [2007/06/12(火) 15:02:19 ]
そのアイコンの話なーんだよバーカ

965 名前:デフォルトの名無しさん mailto:sage [2007/06/12(火) 15:40:27 ]
扱うのはそのアイコンだが、今回の話はそれとは違う部分の制限だろ

966 名前:デフォルトの名無しさん mailto:sage [2007/06/12(火) 16:05:06 ]
いや、>>962の説明で正しい。

967 名前:デフォルトの名無しさん mailto:sage [2007/06/12(火) 16:21:31 ]
元の質問者は16色と言ってるんだけど、
つまりこれは16色の環境で実行したってことなの?

968 名前:デフォルトの名無しさん mailto:sage [2007/06/12(火) 16:32:16 ]
>>967
>16色らしいのですが
っつーくらいだから、試してはいないとふんだ。

969 名前:デフォルトの名無しさん [2007/06/12(火) 16:51:50 ]
すいません。元の質問者です。

試しました。
オレンジベースのグラデーションで16色アイコンをShell_NotifyIcon()で
表示したのですが、XP上ではイメージどおりに表示されたのですが
2Kに持っていったらグレースケール色になってしまったのです。
ググったら2Kは16色だよ。との情報を得ました。

そしてその16色とは固定の16色なのか16種類なのかとの疑問となり、
グレーになる原因を求めてこのスレにお邪魔させていただきました。
>>962さんの情報では
2Kはデスクトップのカラービットに依存すると解釈したのですが
であれば、32bitに設定していますので普通に表示されるはずだと
思うのですが・・・また解からなくなってしまいました。

970 名前:デフォルトの名無しさん mailto:sage [2007/06/12(火) 17:03:03 ]
普通にShell_NotifyIconだけだと16色にしかならないから
XP未満で256色なのはタスクトレイのウィンドウをフックしてイメージリストを書き換えてるんだよ。
exploer.exeにパッチとか常駐ソフトで変更てのもあるが汎用性がない。

971 名前:デフォルトの名無しさん mailto:sage [2007/06/12(火) 17:06:47 ]
グレースケールだとシステム標準じゃないような、、、って
白、明灰、暗灰、黒の4段階ならシステム16色だな。



972 名前:デフォルトの名無しさん [2007/06/12(火) 17:13:22 ]
元の質問者です。

すると
Shell_NotifyIcon()だけを素直に使った場合、
>>960のシステムカラー16色という制限を受けるって
ことですね。

973 名前:デフォルトの名無しさん mailto:sage [2007/06/12(火) 17:33:38 ]
16x16ドット16色で見やすいアイコンを作るのもプログラマの腕の見せ所です

974 名前:デフォルトの名無しさん [2007/06/12(火) 17:42:31 ]
なるほどシステムカラーを組み合わせて
遠目からオレンジっぽく見えるようにします。

それにしても>>962さんの紹介してくれたMSの説明は
フックしてイメージリストを書き換えるのが前提の
説明なのでしょうか。
英語が苦手なので全部を解読するのは厳しいですが、
それもプログラマの腕の見せ所ですものね。

975 名前:デフォルトの名無しさん mailto:sage [2007/06/12(火) 17:48:12 ]
流れとは関係ないかも知れないが、
うちの win98 では、トレイ上ではないが、8ビットカラーの 32x32, 16x16 の
アイコンが表示されている。写真から xpadie かなんかで減色して作ったもの。

976 名前:デフォルトの名無しさん mailto:sage [2007/06/12(火) 17:51:12 ]
休止状態、スタンバイ、スリープから復帰したことを知ることって出来ないですか?

977 名前:デフォルトの名無しさん mailto:sage [2007/06/12(火) 17:54:48 ]
はい。

978 名前:デフォルトの名無しさん mailto:sage [2007/06/12(火) 18:03:40 ]
>>976
ttp://www.winapi-database.com/Message/WM/WM_POWERBROADCAST.html

979 名前:デフォルトの名無しさん mailto:sage [2007/06/12(火) 18:06:19 ]
>>976
出来ない が true か → いいえ
出来ない が false か → はい


980 名前:デフォルトの名無しさん mailto:sage [2007/06/12(火) 18:07:43 ]
>>976
質問の仕方が悪い。

休止状態、スタンバイ、スリープから復帰したことを知る方法がありますか。
あれば、その方法を教えてください。

とか言えばいいのよ。

本当に知りたいことが、方法の有無だけで、
あるなら自分で調べるよ、という人もいるからね。

981 名前:デフォルトの名無しさん mailto:sage [2007/06/12(火) 18:14:25 ]
>>978
thx
>>980
行間が読めない馬鹿は死ねばいいと思います



982 名前:デフォルトの名無しさん mailto:sage [2007/06/12(火) 18:24:12 ]
>>978は余計なことをしたな

983 名前:デフォルトの名無しさん mailto:sage [2007/06/12(火) 18:26:53 ]
一行だから行間はない

984 名前:デフォルトの名無しさん mailto:sage [2007/06/12(火) 18:27:46 ]
>>980の脳が腐ってるだけ。

985 名前:デフォルトの名無しさん mailto:sage [2007/06/12(火) 18:45:00 ]
>976が赤の他人に甘えてるだけ。
行間読むなんて、どこまでできても結局読んだ奴の推測にすぎない。

986 名前:デフォルトの名無しさん mailto:sage [2007/06/12(火) 18:46:52 ]
もう>>983の勝ちでいいよ

987 名前:デフォルトの名無しさん mailto:sage [2007/06/12(火) 18:46:56 ]
お前らそんなんじゃコンビニにすら行けないな。

988 名前:デフォルトの名無しさん mailto:sage [2007/06/12(火) 18:49:13 ]
>>985がアホ過ぎるwよくそんなんで生活出来てるなwwwwwww

989 名前:デフォルトの名無しさん mailto:sage [2007/06/12(火) 18:51:59 ]
質問の回答を聞きに来たのか
煽りに来たのか
どっちだ

990 名前:デフォルトの名無しさん mailto:sage [2007/06/12(火) 18:53:37 ]
あんな質問してる方がアホ過ぎだ

991 名前:デフォルトの名無しさん mailto:sage [2007/06/12(火) 18:54:40 ]
一連のレスで何が一番ひどいかって言ったら、>>981だろう。
こういうやつにまともなレスをしてはいけない。
しかも自演までしてるし。



992 名前:デフォルトの名無しさん mailto:sage [2007/06/12(火) 18:56:29 ]
「ぼくのしつもんに すなおに こたえないやつは わるいやつ」

993 名前:デフォルトの名無しさん mailto:sage [2007/06/12(火) 18:56:49 ]
じゃあ一番のボケは>>985ってことで

994 名前:デフォルトの名無しさん mailto:sage [2007/06/12(火) 19:12:25 ]
>>988
対面リアルタイムでのやりとりは、この文字だけのやりとりとは情報量が格段に違うんだよ。

995 名前:デフォルトの名無しさん mailto:sage [2007/06/12(火) 19:15:25 ]
>>980くらいでカチンとくるやつは
この板でちゃんとした回答はもらえないだろうなぁ

996 名前:デフォルトの名無しさん mailto:sage [2007/06/12(火) 19:19:16 ]
社会でも駄目だろ
文章力も無いのに行間読めとか言う奴は

997 名前:デフォルトの名無しさん mailto:sage [2007/06/12(火) 19:22:12 ]
課長、行間読んでます?

998 名前:デフォルトの名無しさん [2007/06/12(火) 19:28:04 ]
>>981
お前が死ねば?


999 名前:デフォルトの名無しさん mailto:sage [2007/06/12(火) 19:35:08 ]
ぬるぽ

1000 名前:デフォルトの名無しさん mailto:sage [2007/06/12(火) 19:37:04 ]
行間はここに↓

1001 名前:1001 [Over 1000 Thread]
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。








[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<234KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef