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

555:デフォルトの名無しさん
07/05/29 23:53:25
だってBOOTはtypedef int BOOL;だし‥‥
bool型とは違うのだよ。

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

557:デフォルトの名無しさん
07/05/30 00:37:32
>>555
BOOT?
>>552

558:デフォルトの名無しさん
07/05/30 00:40:54
>>557
BOOTSを語れゴラァ part2
スレリンク(tech板)

559:デフォルトの名無しさん
07/05/30 00:44:31
>>558
ちっ、先に張られたか。

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

561:デフォルトの名無しさん
07/05/30 02:49:46
>>554
あれヒドいよなw
なら戻り値の型 BOOL にすんなと。

562:デフォルトの名無しさん
07/05/30 02:50:05
>>560
BOOLはWin32APIの話だろうが。

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

564:デフォルトの名無しさん
07/05/30 04:24:21
>>563
型もAPIのうちですよ。


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

566:デフォルトの名無しさん
07/05/30 05:27:23
>>565
URLリンク(msdn2.microsoft.com)

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

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

569:デフォルトの名無しさん
07/05/30 10:03:53
記述漏れがあるけど参考程度にはなるな

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

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

572:デフォルトの名無しさん
07/05/30 16:23:46
質問です。

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

573:デフォルトの名無しさん
07/05/30 16:39:17
GetDC(NULL)

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

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

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

577:デフォルトの名無しさん
07/05/30 18:00:53
ごめん素で分からんのだが、APLって何

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

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

580:デフォルトの名無しさん
07/05/30 18:58:42
冠詞の a で始まる固有名詞は見たことない

581:デフォルトの名無しさん
07/05/30 19:14:17
>>580
>>574で見ているはずだ

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

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

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

585:デフォルトの名無しさん
07/05/30 21:50:20
なにワガママ言ってるんだ?

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

587:デフォルトの名無しさん
07/05/30 21:51:55
>>584
したくないというキモチをガマンする

588:ららら
07/05/30 21:52:20
ガマンできないのらー!

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

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

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

592:ららら
07/05/30 22:10:44
セキュリティは大丈夫なのか?

593:デフォルトの名無しさん
07/05/30 22:13:03
それはお前のコード次第

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

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

596:ららら
07/05/30 22:17:56
わぅー・・・・

597:デフォルトの名無しさん
07/05/30 22:26:31
気持ち悪すぎワロタw

598:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/05/30 22:46:41
不正はやめましょう。

600:デフォルトの名無しさん
07/05/30 22:55:38
素直にUWSCで組みましょう

601:デフォルトの名無しさん
07/05/30 23:00:05
低スキルチーターがあらわれた!

602:デフォルトの名無しさん
07/05/30 23:02:55
じーんせいはワンツーパンティー

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

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


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

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

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

606:デフォルトの名無しさん
07/05/31 15:32:57 BE:139752689-2BP(222)
>>582
Server2003に標準で入ってるよ。
URLリンク(www.microsoft.com)

607:デフォルトの名無しさん
07/05/31 15:47:14
Windows Home Server機がAppleTV並みの値段とサイズで出るといいんだが

608:デフォルトの名無しさん
07/05/31 23:30:13
日本語版 Windows SDK だって
URLリンク(www.microsoft.com)

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

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

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

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

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

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

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

615:デフォルトの名無しさん
07/06/01 07:26:12
>>613
あら。すんません読んでませんでした。

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

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

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

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

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

619:デフォルトの名無しさん
07/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が来ます。

URLリンク(support.microsoft.com) を見ると、
HttpSendRequest()の結果がFALSEになりERROR_INTERNET_INVALID_CAなどを取得できるとあるのですが・・・

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

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

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

622:デフォルトの名無しさん
07/06/01 18:55:46
>>621
開発環境と、想定IEはなぬ?

623:デフォルトの名無しさん
07/06/01 19:31:54
INTERNET_FLAG_RELOAD | INTERNET_FLAG_SECURE | INTERNET_FLAG_NO_UI | INTERNET_FLAG_KEEP_CONNECTION

624:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/06/01 22:49:41
関連無いけどこっちもwininetの質問
httpQueryInfoを同じアプリケーション内で繰り返し呼ぶと、
abnormal tarminationとかいうエラーがでるようなのですが
原因となりえるものってどんなことがあるでしょうか?


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

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

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

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

627:デフォルトの名無しさん
07/06/02 00:21:32
そうさ!
俺がルールだ!!

628:デフォルトの名無しさん
07/06/02 00:54:04
ソーサ ヨミウリ

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

630:625
07/06/02 15:08:12
どうやらサーバーが重くてヘッダーが
取得できてないようです。

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

631:デフォルトの名無しさん
07/06/02 15:17:32
>>629
URLリンク(msdn2.microsoft.com)

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

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


634:デフォルトの名無しさん
07/06/02 18:29:37
デュアルやクアッドCPUじゃなくてマルチコアなのか

635:デフォルトの名無しさん
07/06/02 18:31:46
カーネルに聞け

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

637:636
07/06/02 18:37:41
URLリンク(msdn2.microsoft.com)

Win32_Processorクラス


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

639:636
07/06/02 18:40:57
URLリンク(msdn2.microsoft.com)

Win32_ComputerSystemクラスも見るべきか?


640:デフォルトの名無しさん
07/06/02 18:46:58
>>634
デュアルもクアッドもマルチコアではないのですか?

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

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

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

643:デフォルトの名無しさん
07/06/02 18:53:07
>>640
デュアルコアとデュアルCPUは違うぞ?

644:636
07/06/02 18:54:09
>>641
C側からは、儀式的に感じるよね。
憂鬱なカンヂや

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

646:636
07/06/02 19:11:08
最近はGetLogicalProcessorInformationって関数もあるのね

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


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

649:デフォルトの名無しさん
07/06/02 19:33:47
GetThreadAffinityMaskでできるみたいですにゃ


650:デフォルトの名無しさん
07/06/02 19:38:23
>>649
すげえ
初めて叱咤
あんた最強ですぅ

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

651:デフォルトの名無しさん
07/06/02 19:46:56
え、GetThreadAffinityMaskってなくない?
kernel32.dll直接見てもなかったよ

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

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


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

655:デフォルトの名無しさん
07/06/03 04:07:11
>>654です。事故解決しました。
WNetAddConnection3を試してみます。

656:デフォルトの名無しさん
07/06/03 08:34:11
>>654-655
夜は寝ようよw

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

658:デフォルトの名無しさん
07/06/03 12:10:26
txtで読んで消す

659:デフォルトの名無しさん
07/06/03 12:12:20
>>657
WritePrivateProfileString()
lpStringにNULLを渡す

660:647
07/06/03 13:21:26
自己解決しました。

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

662:デフォルトの名無しさん
07/06/03 14:15:40
そのぐらい自分で作れよ。

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

664:デフォルトの名無しさん
07/06/03 18:27:33
>>661
基本ツールだろ
URLリンク(www.microsoft.com)


665:デフォルトの名無しさん
07/06/03 18:34:24
それGUIやんけ

666:デフォルトの名無しさん
07/06/03 22:00:04
シェアウェアで何かあった気がするな。

667:デフォルトの名無しさん
07/06/03 23:14:57
サンプルソースにあるんだから、好みで作ればいい

668:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/06/04 00:50:55
> このwarningを消す方法として
警告が出てるって事は、lstrlen とか strlen とか古い文字列関数が他に使われてるってことだべ?

全部置き換えれ。

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

671:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/06/04 03:10:38
何か勘違いしてるんじゃない?
そのWarningが、どの関数で出たのか、もう一度よーくチェックしてごらん
つーか、ソース貼ればいいのに・・・

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

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

674:デフォルトの名無しさん
07/06/04 04:21:07
sprintf周りが抜けてるんだろうなあ

675:デフォルトの名無しさん
07/06/04 08:20:54
>>671
それ<strsafe.h>関係ない

Visual C++ 2005のCRTのセキュリティ強化 
URLリンク(msdn2.microsoft.com)(VS.80).aspx
CRT関数のセキュリティが強化されたバージョン 
URLリンク(msdn2.microsoft.com)(VS.80).aspx

676:デフォルトの名無しさん
07/06/04 10:25:48
>>671
Warningに書いてあるやんけ。おまいの目は尻に付いてるのか?


677:デフォルトの名無しさん
07/06/04 10:38:22
metokoumon

678:デフォルトの名無しさん
07/06/04 11:04:05
>>676
フォーラムにもそれ風なことがあったお
URLリンク(forums.microsoft.com)

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

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

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

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

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

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

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

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


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

683:デフォルトの名無しさん
07/06/04 18:37:34
作者のオナニーなんて見たくないからいらんモノを出すな。

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

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

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

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


687:デフォルトの名無しさん
07/06/04 19:35:01
あほだなあ
ウィンドウが可視状態かみてればいいのに

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

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


689:688
07/06/04 19:51:00
×付いてるのが
○付いてるのか

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

690:668
07/06/04 20:52:02
わふ。とりあえずソース貼ってなかったのがダメすぎたっぽいので貼ります。すみません。
URLリンク(s-io.net)
pass: API

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

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

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


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

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

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

692:デフォルトの名無しさん
07/06/04 23:28:40
ありません

693:デフォルトの名無しさん
07/06/04 23:39:16
CryptoAPIがとっても面倒だった記憶があるけど。

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

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


695:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/06/05 01:36:39
じゃstd::stringという事で

697:デフォルトの名無しさん
07/06/05 01:55:52
速度でないじゃん

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

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

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


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

701:デフォルトの名無しさん
07/06/05 07:58:13
ファイルサイズなら GetFileSize なりなんなりで。

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

703:デフォルトの名無しさん
07/06/05 08:03:45
JPEG フォーマット
URLリンク(siisise.net)

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

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

706:デフォルトの名無しさん
07/06/05 08:42:42
わからない人、答えたくない人は黙ってくれてればいいです。

707:デフォルトの名無しさん
07/06/05 09:36:14
無理だよ

708:デフォルトの名無しさん
07/06/05 09:46:48
そもそもWinAPIと無関係。

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

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

711:デフォルトの名無しさん
07/06/05 10:42:58
>>704 釣り乙

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

713:デフォルトの名無しさん
07/06/05 10:57:49
だな、たとえ可能でもお前には無理

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

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

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

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


718:714
07/06/05 11:19:46
>>715
マジデスカ。
IEのHWNDとSB_VERTをGetScrollPosに渡せば取得できるということですよね?

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

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

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

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

723:714
07/06/05 11:34:16
>>722
えぇ。確かにそういう人間かもしれません。

724:デフォルトの名無しさん
07/06/05 11:57:22
>>722
そういう人間、俺の周りにもわんさか要るわww

725:デフォルトの名無しさん
07/06/05 11:59:06
自分のことかな?と最近気づいた

726:デフォルトの名無しさん
07/06/05 12:01:34
居るわ

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

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

729:デフォルトの名無しさん
07/06/05 12:37:32
IEのバージョンは?

730:714
07/06/05 12:50:13
>>728
ありがとうございます。
私は子ウインドウだと認識しています。

>>729
IE6です。

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

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

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

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

732:デフォルトの名無しさん
07/06/05 15:09:48
>>731
kwsk

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

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

734:デフォルトの名無しさん
07/06/05 16:08:08
>>733
ファイルコピー

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

736:733
07/06/05 16:54:21
>>734
ファイルコピーしないでやりたいのですけど。

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

737:デフォルトの名無しさん
07/06/05 17:01:28
/SWAPRUN:CD か。

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

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

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

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

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

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



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

743:デフォルトの名無しさん
07/06/05 21:48:36
WM_なんとか

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

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

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

746:デフォルトの名無しさん
07/06/05 22:17:37
>>738-740
ソースあげ

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

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

749:デフォルトの名無しさん
07/06/05 22:30:19
簡略化したら治っちゃたりするんだなーこれが

750:デフォルトの名無しさん
07/06/05 22:41:43
>>742
スクロールバーつければいいだけかも

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

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

752:749
07/06/05 23:11:45
>>751
だろw

753:デフォルトの名無しさん
07/06/05 23:14:18
>>751
バカスw

754:749
07/06/06 00:03:36
ま、早とちりは誰にでもある。
元気だせw

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

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


757:デフォルトの名無しさん
07/06/06 05:59:31
なぜ存在しないURLに行きたいの

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

759:デフォルトの名無しさん
07/06/06 06:28:49
URLリンク(detail.chiebukuro.yahoo.co.jp)
一つ目の質問は調べたら分かってのでいいです。
スンマソン。

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


761:デフォルトの名無しさん
07/06/06 08:11:46
移動する前に存在するか調べればいい

762:デフォルトの名無しさん
07/06/06 08:25:41
>>756
IWebBrowser2::SilentにVARIANT_TRUEは?

763:デフォルトの名無しさん
07/06/06 09:42:44
>>758
RegisterDeviceNotification

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

765:デフォルトの名無しさん
07/06/06 10:45:08
>>763
>>764
ありがトン。

766:デフォルトの名無しさん
07/06/06 10:59:54
OSの起動じゃないのか

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

768:デフォルトの名無しさん
07/06/06 11:24:07
BIOSが対応していれば出来るけど?

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

770:デフォルトの名無しさん
07/06/06 12:20:36
>>768をどう読めばそうなるんだよ

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

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

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

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



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

775:デフォルトの名無しさん
07/06/06 13:27:14
メーカーによってAPIが異なることはありますか?

776:デフォルトの名無しさん
07/06/06 13:33:47
詳細は各メーカに問い合わせてください。

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

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


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

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


780:デフォルトの名無しさん
07/06/06 15:56:46
スルーしろよ

781:691
07/06/06 17:03:25
>>692
ないですか・・・
>>693
情報ありがとうございます。

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

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

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

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

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


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

4983日前に更新/234 KB
担当:undef