問題タブ [pywin32]

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.

0 投票する
4 に答える
9988 参照

python - Python からの SQL Server データベースの作成

Python と pywin32 の adodbapi を使用して、SQL Server データベースとそれに関連するすべてのテーブル、ビュー、およびプロシージャを作成するスクリプトを作成しています。問題は、Python の DBAPI では、cursor.execute() を、cursor.commit() によってのみコミットされるトランザクションにラップする必要があり、ユーザー トランザクションでデータベース ステートメントの削除または作成を実行できないことです。それを回避する方法についてのアイデアはありますか?

編集:

adodbapi の connect() メソッドまたはその cursor() メソッドのいずれかへの autocommit パラメータに類似するものはないようです。char および varchar データ型が 255 文字で切り捨てられることを除いて、adodbapi の代わりに pymssql を使用できれば幸いです。

投稿する前にこれを試しました。これがトレースバックです。

0 投票する
2 に答える
811 参照

python - (CreateProcessAsUser を介して) LocalSystem サービスから生成された GUI アプリにフォーカスがない

特定のユーザー (キオスク ユーザー) がログインしている場合にのみ、特定のユーザーのデスクトップに一種のスプラッシュ スクリーンを表示するサービスを作成しました。

そのスプラッシュ スクリーンは、有効なコードが入力されると、それをサービスに通知し、サービスは x 時間 (コードによって異なります) スリープ状態になります。

スプラッシュ スクリーンは単純に終了します。サービスが起動すると、スプラッシュがなくなっていることがわかり、起動します。

これはすべて機能しています。唯一の問題は、起動したアプリケーションにフォーカスがないことです。つまり、メモ帳で作業していて時間が経過すると、スプラッシュ画面がメモ帳の後ろに表示されます (全画面表示)。

Windows Vista についてのみ心配する必要があります。win32 拡張機能を使用して Python でコーディングしていますが、この問題は LocalSystem アカウントから呼び出されたときの CreateProcessAsUser にあると思います。


アップデート:

「問題」は、実際には、私のような「刺激的な」アプリケーションがフォーカスを盗むのを防ぐための意図的な制限です。

設定によって動作を変更できます: win32gui.SystemParametersInfo(win32con.SPI_SETFOREGROUNDLOCKTIMEOUT, 0, 0) これはレジストリ値を一時的に設定するのと同じです: HKEY_CURRENT_USER\Control Panel\Desktop\ForegroundLockTimeout起動するアプリでそれを作成するか、起動するアプリの起動ヘルパーを構築します。

ただし、アプリケーションは、私が今覚えていない API 呼び出しを使用して、フォーカスが盗まれるのを防ぎたい場合があります。

おそらく良い解決策は、現在そのユーザーからのすべてのウィンドウ ハンドルを見つけてから、これらの各ハンドルを使用して win32gui.ShowWindow(handle, command) を使用して最小化することです。

ただし、この特定の問題の設定では、locktimeout 設定で十分でした。

サービスからデスクトップにアプリケーションを起動する方法を知りたい人は、コードへのリンクを参照してください

0 投票する
4 に答える
13198 参照

python - アクティブなウィンドウから選択したテキストを取得する方法

現在アクティブなウィンドウの選択されたテキストに対してユーザー定義のアクションを実行できるPythonを使用して、ウィンドウ用の単純なオープン ソース ユーティリティを作成しようとしています。ユーティリティは、事前定義されたキーボード ショートカットを使用してアクティブにする必要があります。

使用法は、次の例で部分的に概説されています。

  1. ユーザーがマウスまたはキーボードを使用して (任意のアプリケーション ウィンドウで) テキストを選択します。
  2. ユーザーが事前定義されたキーボード ショートカットを押したとき
  3. 選択したテキストは、ユーティリティによって取得されるか、クリップボードにコピーされます (どちらの方法でも問題ありません)。
  4. 選択したテキストに対して、キーボード ショートカットに依存するアクションが実行されます。

私を困惑させるのはステップ 3です。アクティブなウィンドウから選択したテキストを取得する方法。これは、すべてのアプリケーションで機能するはずです。

pywin32モジュールを使用しています。

回答とヒントをお寄せいただきありがとうございます。

更新#1

このタスクを達成するには、次の 2 つの方法があることがわかりました。

  1. アクティブなウィンドウを見つけて、メッセージ/キーストローク (Ctrl-C) をウィンドウに送信して、選択したテキストをクリップボードにコピーします。次に、ユーティリティは、クリップボード関連の関数を使用してテキストにアクセスすることで、テキストを操作できます。
  2. アクティブなウィンドウを見つけて、選択したテキストを (クリップボードにコピーせずに) 直接取得します。これは、最初のアプローチよりも難しいようです。

出発点として:

Anurag Unyal が返信で指摘したように、アクティブなウィンドウ ID を取得します。

または、次のコードでウィンドウ オブジェクトを取得します。

0 投票する
4 に答える
45490 参照

python - PythonのCOM/ActiveXで何ができますか?

COM/ActiveXを使用してCrystalReportsの月次レポートを自動化できることを読みました。私はこれが何であるか、またはあなたがそれで何ができるかを理解するのにそれほど進んでいません。

私もExcelで多くの作業を行っていますが、COM/ActiveXを使用してExcelとインターフェイスしているようです。

誰かがこれがどのように機能するかを説明し、簡単な例を提供できますか?

0 投票する
4 に答える
4144 参照

python - Windows XP - Python でプログラムによって音声をミュート/ミュート解除する

私のマシンには 2 つのオーディオ入力があります。ゲームに使用するマイク入力と、ギターに使用するライン入力です。一方を使用するときは、ヒス/ノイズを除去するためにもう一方をミュートすることが重要です。そのため、どちらがミュートされているかを切り替える小さなスクリプトを書きたいと思っていました (トレイ アイコンをクリックして入力デバイスに切り替え、ミュートするのはかなり不便です)。し、ミュートを解除します)。

おそらくpywin32でこれを行うことができると思いましたが、見つけたものはすべて、入力ではなく出力ボリュームの設定に固有のもののようでした.win32に精通していないため、どこでより良い情報を探すべきかさえわかりません.

誰かが私を正しい方向に向けることができますか?

0 投票する
1 に答える
4436 参照

python - Python での COM イベントの使用

いくつかの COM オブジェクトを使用するサンプル アプリを Python で実行しようとしています。Win32 での Python プログラミングの有名な第 12 章を読みましたが、この問題に関しては次のようにしか述べていません。

すべてのイベント処理は通常のIConnectionPointインターフェイスを使用して行われ、この本の範囲を超えていますが、標準の Python COM フレームワークによって完全にサポートされています。

誰でもこれに光を当てることができますか?簡単なスターターサンプルが必要です。このサンプルにコードを追加して、スプレッドシートの OnActivate イベントをキャッチするようなもの

0 投票する
1 に答える
1372 参照

python - Python / ADOX: 「指定されたモジュールが見つかりませんでした。」(win32 拡張機能)

Python 2.5用にpywin32を実行しています。

http://www.ecp.cc/pyado.htmlにあるpython ADO の指示に従っています。

ADODB.Recordset オブジェクトの作成は正常に機能します。しかし、ADOX.Catalog オブジェクトを作成しようとすると、エラーが発生します。

私が見逃している可能性のあるアイデアはありますか?

0 投票する
1 に答える
510 参照

python - Python(pywin32)から使用されるCheckedListBox

PythonからCheckedListBoxのアイテムのリストを取得し、アイテムをチェック/チェック解除する方法を知っている人はいますか?私はこれが途中で部分的に私を助けるのを見つけました。CheckedListBox(WinGuiAuto.pyによってSysTreeView32としてリストされている)のハンドルを見つけたと思います。

私の場合の1つの使用法は、ブロートウェアをインストールするすべてのチェックボックスのチェックを外すことができる自動インストーラーを作成することです。

0 投票する
3 に答える
2047 参照

python - Pythonの画面解像度の仮想マシンを変更します

virtualboxでは、画面の解像度は何でもかまいません。993x451などの奇妙なものでもかまいません。pywin32を使用して変更しようとしましたが、失敗しました::

最終的には:

何か助けはありますか?

0 投票する
2 に答える
2121 参照

windows - リモート デスクトップが切断されると、GetForegroundWindow が Null を返す

アプリを起動し、GetForegroundWindow() の呼び出しによってアプリが起動されたことを確認するテストがあります。テストは、通常はリモート デスクトップ経由でアクセスするリモート マシンで実行されます。マシンに対して rdp セッションを開くと、テストは完了し、すべて問題ありません。ただし、リモート デスクトップを閉じると、GetForegroundWindow が常に Null を返すため、テストは失敗します。切断後のアクティブなデスクトップがまだ「デフォルト」であることを確認したので、この問題が発生していないことは確かです。これを引き起こしている可能性のあるアイデアはありますか?

前もって感謝します