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

ぶっちゃけ下の人と同じ事をしたいのですが、
リンク先の回答者が教えているcodeprojectの方法では
取得する事はできない様です。
URLリンク(rararahp.cool.ne.jp)


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

454:デフォルトの名無しさん
07/05/28 06:31:58
開き方が悪い

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

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

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

457:デフォルトの名無しさん
07/05/28 08:44:38
>>453
偽装しておけ

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

459:デフォルトの名無しさん
07/05/28 10:10:09
イメージリストを作るときのフラグによって異なる

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


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


462:デフォルトの名無しさん
07/05/28 11:17:27
>>460
DirectX 入門

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

463:デフォルトの名無しさん
07/05/28 11:18:25
>>461
Delphiの布教乙

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

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

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

467:デフォルトの名無しさん
07/05/28 11:25:31
DirectXをやるのにDelphiを勧めるぐらいならC++Builderにしろよ

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

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

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

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


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

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

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

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

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

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

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

476:デフォルトの名無しさん
07/05/28 13:10:43
全く別の言語を扱うより遙かにマシ。

477:デフォルトの名無しさん
07/05/28 13:10:57
ぶふぉぁあ?

478:デフォルトの名無しさん
07/05/28 13:18:39
>>477
次のバージョンで追加されるメソッドです
たぶん

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

480:デフォルトの名無しさん
07/05/28 13:53:17
COMの話だろ

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


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

483:デフォルトの名無しさん
07/05/28 15:27:18
DirectXならDirectXだけの世界だから大丈夫 Win32もとなると大変だけどね。

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

484:デフォルトの名無しさん
07/05/28 15:46:39
C#って結構難しいよ

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


486:デフォルトの名無しさん
07/05/28 16:21:02
言語論争ウゼェ

487:デフォルトの名無しさん
07/05/28 16:33:10
>>445君へ

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

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

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

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

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

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

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

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

492:デフォルトの名無しさん
07/05/28 19:26:43
あります

493:デフォルトの名無しさん
07/05/28 19:43:45
で?

494:デフォルトの名無しさん
07/05/28 19:48:07
bool 型は便利だな

495:デフォルトの名無しさん
07/05/28 20:33:48
>>492
>>491の後半部分しか答えてないよ。

496:デフォルトの名無しさん
07/05/28 20:42:39
全部の質問に答えたとは誰も言っていない。

497:491
07/05/28 21:29:42
どのように判断すればいいのでしょうか?

498:デフォルトの名無しさん
07/05/28 21:38:57
::GetScrollPos

499:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/05/28 23:12:36
教えてください。
SetClipboardViewerで画像かどうかを識別するには何を使えばいいのでしょうか?

501:デフォルトの名無しさん
07/05/28 23:29:50
>>500
WM_DRAWCLIPBOARDでEnumClipboardFormats

502:500
07/05/28 23:35:32
>>501
ありがとうございます。やってみます。

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

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


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

504:デフォルトの名無しさん
07/05/29 00:10:16
そのアプリの特徴を研究する。

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

506:デフォルトの名無しさん
07/05/29 00:31:55
プロセス列挙してモジュール名で判別なんてのも

507:503
07/05/29 00:59:45
>>504-506
506さんの方法でやってみます。
ありがとうございました。

508:デフォルトの名無しさん
07/05/29 02:03:14
>>503
FindWindowを使えばいいよ

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

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


510:452
07/05/29 05:52:02
お願いします。
>>452

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

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

513:452
07/05/29 06:37:47
ありがとうございます。
SID取得できたんで解決しそうです。

514:489
07/05/29 06:39:32
>>499
ありがとうございます。
TabCtrl_InsertItemに変えるとうまくいきました。

515:452
07/05/29 07:06:24
NETWORK SERVICE、LOCAL SERVICE共に
無事LookupAccountSidで取得できました。

516:デフォルトの名無しさん
07/05/29 07:11:47
報告乙

517:デフォルトの名無しさん
07/05/29 07:20:17
なんか夜明けと共に明るい声が響いてくる

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

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

520:デフォルトの名無しさん
07/05/29 08:42:03
コンパイルすればプログラムになるだろ。

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

522:デフォルトの名無しさん
07/05/29 12:19:32
ファイル名が分かればファイルのチェックサムを算出できる。

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

524:デフォルトの名無しさん
07/05/29 12:56:08
ATL製ネトゲなんてあるのか・・・?

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

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

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

527:デフォルトの名無しさん
07/05/29 15:07:04
フィボナッチ数列を求める

528:デフォルトの名無しさん
07/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あったら教えてください。
最終的には↓にしたいです。
URLリンク(www.google.co.jp)

529:デフォルトの名無しさん
07/05/29 15:46:06
MultiByteToWideChar と WideCharToMultiByte

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

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

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

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

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

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

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

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

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

539:デフォルトの名無しさん
07/05/29 19:23:12
少なくとも89年のANSI Cではあったな。

540:デフォルトの名無しさん
07/05/29 19:43:17
Windowsの開発が始まった頃には間違いなくあった。

541:デフォルトの名無しさん
07/05/29 21:10:54
>Windows 1.0が登場したのは1985年11月18日

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

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

544:デフォルトの名無しさん
07/05/29 22:03:52
const char * と char const * は同じだよ。
違うのは char * const 。

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

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

547:デフォルトの名無しさん
07/05/29 22:25:26
>>546
どっちにしろスレ違い。

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

549:デフォルトの名無しさん
07/05/29 22:32:28
C++のboolとBOOLは違うんだぜ

550:デフォルトの名無しさん
07/05/29 22:37:31
どう違うんだぜ?

551:デフォルトの名無しさん
07/05/29 22:37:51
>>549
そもそもC++にはBOOLなんて型はない

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

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

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

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
もちろんそこでスプラッシュを出すにしても、
やるべきことは、それ以前に終わらせておけよ


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

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