問題タブ [screensaver]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
objective-c - WebView を使用した Mac スクリーンセーバーがクラッシュする
みなさん、こんにちは。
obj-c と cocoa で作成したスクリーンセーバーがあります。以下を除いて、OsX 10.6.2 ではすべて正常に動作します。私のスクリーンセーバー内には、いくつかのアプリケーションが実行されている WebView があります。Objective-C アプリ (スクリーンセーバー) を JavaScript 経由で呼び出そうとすると、エラーが発生し、スクリーンセーバーとシステム設定パネルがクラッシュします。
システム環境設定 [86666] *** キャッチされない例外 'NSInvalidArgumentException' によりアプリを終了します
理由: '-[NSCFArray ドレイン]: 認識されないセレクターがインスタンス 0x20049b1e0 に送信されました'
*** Call stack at first throw:(
0 CoreFoundation 0x00007fff8123a444 __exceptionPreprocess + 180
1 libobjc.A.dylib 0x00007fff81f130f3 objc_exception_throw + 45
2 CoreFoundation 0x00007fff812931c0 +[NSObject(NSObject) doesNotRecognizeSelector:] + 0
3 CoreFoundation 0x00007fff8120d08f forwarding + 751
4 CoreFoundation 0x00007fff812091d8 _CF_forwarding_prep_0 + 232 5 WebCore 0x00007fff847adee0 _ZN3JSC8Bindings12ObjcInstance10virtualEndEv + 48
6 WebCore 0x00007fff8470d71d _ZN3JSC16RuntimeObjectImp18getOwnPropertySlotEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE + 397
7 JavaScriptCore 0x00007fff80862b66 NK3JSC7JSValue3getEPNS_9ExecStateERKNSS_12Proty10 あたりの識別子 6
)
これはメモリ リークのように見えますが、コードでわかるように、実際にはほとんどオブジェクトが割り当てられていません。
これは、スクリーンセーバーのシステム設定から「テスト」ボタンを使用してスクリーンセーバーを起動した場合にのみ発生します。ターミナル経由でスクリーンセーバーを起動するか、自動的に起動する場合、同じアクション (javascript から obj-c を呼び出す) が正常に機能します。
たぶん、誰かがエラーの原因を知っているかもしれません。実装からのコードを次に示します。
いくつかの問題/解決策を確認するのに十分なコードであることを願っています. どんな答えでも本当に感謝しています。
c# - ドロップダウン リストに表示されるスクリーンセーバー (フレンドリ/ディスプレイ) 名を制御するにはどうすればよいですか? - Windows Server 2003 / Windows 2000
そのため、以前に同じタイトルで質問をしたところ、ほとんどの部分で機能する回答が得られました。私の問題は、Win32 リソース ファイルの文字列テーブルが Windows Server 2003 で動作していないことです (おそらく他のものも、この時点では O/S テストが制限されています)。
テスト結果:
正しく表示されます:
- WindowsXP
- Windows ビスタ
- ウィンドウズ7
正しく表示されない:
- Windows 2000 プロフェッショナル
- Windows Server 2003
最初の質問に対する回答で提供された解決策が、Windows XP および Vista では期待どおりに機能することはわかっていますが、Windows Server 2003 では機能しません。「わかりやすい」スクリーンセーバー名を Windows Server に表示するには、別のことを行う必要がありますか? 2003年?
リソース ファイルには次の 2 つの項目しか含まれていません。
- アイコン - ID: 1
- 文字列テーブル
- 文字列 - ID: < 空 >、値: 1、キャプション: CC.Votd
文字列テーブルのみを含むリソース ファイルに戻っても、動作は同じです。
編集:別の文字列を追加しようとしました:
- 文字列 - ID: < 空 >、値: 100、キャプション: CC.Votd
私が見たように、Windows Server 2003 で正しい名前を表示する他のスクリーンセーバーでは何も変わっていません。リソース エクスプローラーを使用して Windows に付属のスクリーンセーバーをブラウズするときに一貫性が見られないため、イライラします。
値 1 とフレンドリ名を含む文字列を指定するものもあります。値が 100 の文字列を指定するものもあります。文字列テーブルを含まないものもありますが、それでも実行可能ファイル名とは異なる名前が表示されます。
更新:リソース ファイルの作成方法と使用方法を示す非常に基本的なソリューションを作成しました。.scr ファイルを XP/Vista ボックスのシステム ディレクトリにコピーすると、ドロップダウンに [Friendly Screen Saver Name] が表示されます。Windows Server 2003 では、「So_screensaver_display_name」(拡張子なしの実行可能ファイル名) が表示されます。こちらからダウンロードできます: http://www.ccswe.com/temp/SO_ScreenSaver_Display_Name.zip
編集: Windows Server 2003 を実行している誰かが、上記のサンプル プロジェクトをコンパイルおよびテストして、これが私の Windows Server 2003 マシンに固有のものであるかどうかを判断できるようにすることも役に立ちます。
ローカルでテストするのは XP/Vista/2003 しかないので、他の OS での結果にも興味があります。ありがとう!
更新:別の Windows Server 2003 (R2) マシンでテストできましたが、結果は同じです。Windows 2000 Professional でも正しく表示されません。ただし、Windows 7 マシンで動作します。
解決策:受け入れられた回答で述べたように、ファイルの名前を から に変更したCC.Votd.scr
ところCCVotd.scr
、Windows 2000/2003CC.Votd
は文字列テーブルから説明を適切に読み取り、ドロップダウンに表示しました。DOS 8.3 以外のファイル名が私の説明を使用しない「理由」をまだ理解していませんが、少なくとも修正されています。
objective-c - ココア ハローワールド スクリーンセーバー
私は NSView を勉強していたので、スクリーン セーバーを試してみようと思いました。NSView で画像を表示することはできましたが、このサンプル コードを変更して、単純な画像を ScreenSaverView に表示することはできません。
http://www.mactech.com/articles/mactech/Vol.20/20.06/ScreenSaversInCocoa/
ところで、Snow Leopard で動作するすばらしいチュートリアルです。
単純に画像を表示するには、次のようなものが必要だと思います...
私は何を間違っていますか?
c# - WPF:実行中のアプリケーションが「アイドル」の場合は、独自のスクリーンセーバーを作成します
実行中のアプリケーションがユーザーと「対話」(またはアイドル状態)していない場合、つまり、アプリケーションでマウスの動きが発生していない場合に表示されるウィンドウ(スクリーンセーバーと同様)を作成する方法はありますか?
私の友人の何人かはこれにタイマーを使うことを提案しました。良いスタートを切るための提案はありますか?ありがとう。
windows - スクリーンセーバーをプログラムで無効にしても、コントロールパネルには影響しませんか?
このページで説明されている方法を使用して、スクリーンセーバーを正常に無効にしました。
問題は、これを実行しても、コントロールパネルダイアログにアクティブなスクリーンセーバーがあることを示していることです。そこでは何も変わっていないようです。ユーザーがそれをチェックすると、スクリーンセーバーが機能しない理由を知る方法がありません。
これは予想される動作ですか?これは問題ではありませんか?
最新のアップデートで完全にパッチが適用されたWindowsXPx64を使用しています。
c# - 代替入力デバイス(Midi)はWinformsアプリケーションのスクリーンセーバーを妨げません
ユーザーがMIDI接続デバイスを介して入力を提供するC#WinFormsアプリケーションを開発しました。ユーザーは、キーボードやマウスを使用せずに長期間移動します。
MIDIメッセージを受信したときに、これがユーザーアクティビティとしてカウントされることをシステムに「伝える」ためにできることはありますか(つまり、キーを押す)。MIDIデバイスがアクティブに使用されている場合に、スクリーンセーバーやタイムロックアウトが発生しないようにします。
私のリクエストは、私が見た他のリクエストとは異なると思います。なぜなら、彼らはアプリケーションの存続期間中スクリーンセーバーを無効にし、受信したMIDI入力をユーザーの対話性としてカウントしたいからです。
システムユーザーのアクティビティを示すためにMIDI入力を受け取ったときに呼び出すことができるものはありますか?
cocoa - デスクトップの壁紙とスクリーンセーバーを設定するには?
ココアアプリからデスクトップの壁紙とスクリーンセーバーを設定する方法は?
cocoa - QTMovie で再生を呼び出すと、Snow Leopard でスクリーンセーバーが無効になる
動作中の Leopard スクリーンセーバーを Snow Leopard に移植しようとしていますが、約 0.5 秒後に非アクティブ化されます。QTMovie で再生を呼び出すと、スクリーンセーバーが非アクティブになるようです。また、QTMovie オブジェクト自体の -play と QTMovieView の -play:self の両方で非アクティブ化されます。
オブジェクトで実際に -play を呼び出さないと、スクリーンセーバーは非アクティブ化されず、ムービーの最初のフレームにとどまります。
通常の Cocoa アプリケーションで同じコードをセットアップすると問題なく動作し、スクリーンセーバーもシステム環境設定のプレビュー モードで問題なく動作します。
どんな助けでも大歓迎です。
cocoa - Cocoa でスクリーンセーバーが起動したことを検出する
Mac OS X スクリーンセーバーがアクティブになったとき、またはスリープ状態になったときに (できればココアを使用して) アクションをトリガーする方法はありますか?