- ベストアンサー
OSとアプリとユーザの関係教えてください。
noname#25358の回答
ある程度の知識はおありのようですね。 おそらくは「投げる」という言葉が使われているせいで、混乱されているだけでしょう。 イベント情報(マウスがクリックされたとか)を認識するのはOSです。 このとき、アプリケーションは「OSの機能を使って」ウィンドウなどを記述しています。 なので、OSは「今どの座標にどのアプリのウィンドウがあるか」という情報を全て持っているのです。 OSがイベント情報を解釈し、現在アクティブになっているウィンドウの座標情報などから、「どのウィンドウのところでマウスがクリックされたか」などを認識し、「そのウィンドウを保持しているアプリケーション」にイベント情報を送信します。 このとき、「規定の方法で作成されたルーチンを、OSが直に起動する」という方法によってイベント情報を受け渡ししています。 よって、ウィンドウズの規定に従っていないルーチンには、OSはイベント情報を「投げる」ことはできないのです。 ウィンドウメッセージは、その「規定の方法で作られたルーチン」に対し、引数として渡されています。
関連するQ&A
- OSとアプリとユーザの関係教えてください。追加
昨日は回答くださったdeagleさん、chieさんありがとうございました。ちょこっと、気になってしかたのない箇所がありまして。 >10.マウスボタンが押された時に呼ばれる処理で、ボタ>ンとかメニューとか、何の上でボタンが押されたか判定す>る。それがボタンコントロールの上だったら、そのボタン>コントロールに登録されている、クリックイベントのルー>チンを呼ぶ。 上の部分で、気になったのが、OSは、アプリがどんなボタンやどんなメニューとかなどの情報までもっているということなのでしょうか? 「どのアプリのどのボタンの上でクリックされた」というような情報までメッセージの引数に埋めてアプリ側にイベントを通知しているのでしょうか? もしそうだとすると、OSがあんなに高いのも頷けてしまいます。
- ベストアンサー
- C・C++・C#
- ブラウザとCGIアプリの関係?!
なんとなく想像はできるものの、正しいかどうか確認させていただきたく 質問させていただきます。 WEBアプリですが、例えば 「ブラウザの処理実行ボタン」クリック→「CGIアプリ」→「結果表示」 のような流れだったとして、 処理実行ボタンをクリックしてすぐにブラウザを閉じた場合、CGIアプリはどこまで処理が行えるのでしょうか? ※CGIアプリの処理はブラウザを閉じるまでの時間よりは長いとした解釈でお願いします。 CGIアプリがreturnで抜けるまで、ブラウザはなくても処理は行ってから終了。 また、 returnの前にブラウザに出力していたら、(ブラウザは無いわけで)returnの前にCGIアプリは終了してしまう。→処理途中で終わってしまうことがありえる よろしくお願いします。 わかりづらかったら、申し訳ありません。
- ベストアンサー
- CGI
- エクセルVBA ユーザーフォームのボタン
ユーザーフォームにCommandButton1があります ワークシートにもCommandButton2があります ユーザーフォーム上のCommandButton1をクリックすることで、ワークシート上のCommandButton2をクリックするという命令は作れるのでしょうか? ワークシート上のCommandButton2をクリックした後の命令は出来ているのですが、そのコードをコピーしてユーザーフォーム上のCommandButton1のコードにコピーするしかないのでしょうか? 実行ボタン(CommandButton2)をワークシートに作成したので、 ユーザーフォームで入力→ ユーザーフォーム上のボタン(CommandButton1)をクリック→ ユーザーフォームは終了→ ワークシート上の実行ボタン(CommandButton2)をクリック してくれると良いかと思いました よろしくお願いします
- 締切済み
- Excel(エクセル)
- タスクバーへアプリの常駐
アプリを起動すると、フォーム等を表示しないでタスクバーにアイコンを表示、常駐する。 そのアイコンがダブルクリックするとフォーム等を開く・・・というアプリを作っています。 API関数で、タスクバーへアイコンを追加、アイコンの削除というのはできたのですが、そのアイコンをダブルクリック(又は、右クリックでメニュー選択)したときフォームが開く、というのが出来ませんでした。 ダブルクリックしたときには、何らかのイベントが動くのでしょうか?それとも、API関数で、それを監視、実行させなくてはならないのでしょうか?
- ベストアンサー
- Visual Basic
- VBAでユーザーフォームを再表示させたい。
ExcelのVBAでユーザーフォームを作成し、 Initializeイベントで初期化をし、コマンドボタンを クリックしたら処理を行うように作成しました。 ところがコマンドボタンによって処理を行った後、 再度Initializeイベントを呼びたいんです。。 (コンボボックスの表示を更新する処理を 含んでいるため) なんとかうまい方法はないでしょうか??
- ベストアンサー
- オフィス系ソフト
- ユーザーフォーム動作で○○○.xlsはすでにひらいています警告文の対策
excel2000 windowsXPを使用しています。マクロ超初心者です。 1)ワークシートにユーザーフォームA が現れます。その中のコマンドボタンをクリックすると a b c 3個のボタンが配置されたフォームB が現れます。 フォームBの aボタンをクリックすると処理用のシートが現れ、このシートに入力複写が完了したので 戻るボタンをクリックして、前のフォームBが表示されます。 問題はここでbボタンを押すと、「○○○.xlsはすでに開いています。2重にひらくと・・・」と警告文がでます。 そこでこの警告文が出ないように もし○○○.xlsが開いていないときは、開き、開いているときは開く命令をやめてその次の行からマクロを実行しなさいというスクリプトを作りたいのですが、どう書いたらよろしいでしょうか? 2)上記フォーム正常に動作していました。フォームの中のボタンを1個だけ削除しました。再度起動したところ 「実行時エラー指定されたオブジェクトをは見つかりません」と出てフォームの修正ができません。 すでに出来たフォームの修正はどうやったらよろしいでしょうか?
- ベストアンサー
- Visual Basic
- タイマー機能について
初めての投稿です.よろしくお願いいたします. .NET 2003のMFCを使用しています. インターフェース上にボタンを設置し,1つのボタンで, 左シングルクリックと左ダブルクリックの両方でメッセージボックスを出したいと考えています. 以前に出ていた質問に同じようなものがあり,(http://oshiete1.goo.ne.jp/qa647244.htmlを参照) タイマー機能を使えばよいということはわかったのですが,実際どうプログラミングを組んだらいいのかわかりません. OnLButtonDown内で, if(数秒以内にもう一度クリックされたら){ ダブルクリックの処理 }else{ シングルクリックの処理 } というのしか思いつかないのですが,これは無理ですよね(^_^;) ダブルクリックの処理はOnLButtonDblClk内で行なっていて… 頭がこんがらがってしまいました. ぜひアドバイスいただければと思います. よろしくお願いいたします.
- ベストアンサー
- Visual Basic
- アプリが起動しないんです…
レッツノートでOSは98。 OSはうまく起動します。 で、ほかのアプリを起動させようとアイコンをクリックするとエラーのメッセージが出てきます。 再起動をしてくださいとかのメッセージです。 で、そこでOKを押すと不正な処理を…と言うメッセージがでます。 原因はなんなのでしょうか? ちなみにウイルスバスターを使っているのでウイルスと言うことは無いと思うのですが。 よろしくお願いします!
- ベストアンサー
- Windows 95・98
- ユーザによってアプリの処理速度が異なる???
ユーザによってアプリの処理速度が異なる??? ローカルユーザとドメインユーザで自作アプリケーションの処理速度が異なり原因が良く分からず困ってます。今までこのような事象になった事がありますか?実際に自作APをローカルユーザでは1秒以内で処理できるが、ドメインユーザでは40秒かかっています。 環境OS:Windows Vista ドメインサーバ:Active Directory ユーザ:Admin権限ありのローカルユーザ :Admin権限なしのドメインユーザ
- ベストアンサー
- Windows系OS
- VB.NET開発(イベントプロシージャはマルチスレッドですか?)
VB.NET開発(イベントプロシージャはマルチスレッドですか?) 以前より.NETのWindowsフォームの業務アプリ開発してますが、基本的な質問をさせて下さい。 イベントプロシージャの実行処理は、本体スレッド(実行時のスレッド)とは別のスレッドで動作しているのでしょうか。 例えば、ボタンのクリックイベントに何かしらの重い処理があったとします。このクリックイベントの処理ではボタンの制御をしていないので、イベントプロシージャの実行中は、処理中のボタンが押下可能な前提とします。この時、このボタンを3回押下して実行させると3つのスレッドが新規に作成されて実行していると考えて宜しいのでしょうか。 デリゲートやイベントに関するキーワードで検索して、いくつか資料を見たのですが、上記の疑問にぴったり合う解答がなく、質問させて頂きました。 業務アプリの開発で、今まで、あまりマルチスレッドなど意識せずやってきましたが、実は意識しなくても、マルチスレッドの開発をしていたことになるのでしょうか。 以前、VB6の開発もしておりました。 ちなみにVB6の場合も、イベントプロシージャはマルチスレッドで実行されていると考えて宜しいのでしょうか。 よろしくお願いします
- ベストアンサー
- Visual Basic
お礼
回答ありがとうございます。 OSとアプリとユーザの関係がよくわかりました。