[python-win32] Grabbing an active Excel application

Jens B. Jorgensen jens.jorgensen@tallan.com
Sat, 17 Aug 2002 00:04:43 -0500


This is a cryptographically signed message in MIME format.

--------------ms050003090509040709030608
Content-Type: text/plain; charset=us-ascii; format=flowed
Content-Transfer-Encoding: 7bit

Yeah, it's really probably a design insufficiency in OLE. There may be a 
workaround but it would require an understanding of OLE that I don't have.

Blair Hall wrote:

> Exactly!
> I would like to try and design the Python application to handle COM 
> better.
> However, I need some advice on how to do that.
>
> At 11:40 16/08/02 -0500, Jens B. Jorgensen wrote:
>
>> It gets worse. I find that if I have a python open that has a 
>> reference to an Excel.Application object and then I close the Excel 
>> window while python is still running then if I later run Excel the 
>> inner frame of the window gets hung (never paints, shows image of 
>> what was behind the window). I'm sure this is not a python problem 
>> per se but a COM one. In this case I can look at the process manager 
>> and find a running excel.exe. I have to kill that process and then 
>> start again to get back to normal.
>>
>> Blair Hall wrote:
>>
>>> Further to my posting yesterday, and Jens' suggestion, I find that 
>>> 'grabbing'
>>> an existing Excel is still problematic.
>>>
>>> Here is __init__ from my class that wants to use Excel
>>>
>>>     def __init__(self
>>>          ,   visible=1
>>>         ):
>>>         """
>>>         Create a new file in the current working directory
>>>         and save a new Excel workbook in it.
>>>         """
>>>         try:
>>>             self.__app = win32com.client.Dispatch("Excel.Application")
>>>             self.__app.Visible = visible
>>>         except pythoncom.com_error, e:
>>>             self.__comExceptionHandler(e)
>>>
>>> When I instantiate that class the first time, then all
>>> is fine. ie:
>>>
>>> >>> xl = myClass()
>>>
>>> However, if I then immediately do something silly like
>>>
>>> >>> xl = myClass()
>>>
>>> Excel disappears from view (it is still running though). From that 
>>> point
>>> on Python and Excel don't seem to be quite able to agree on how
>>> to interact.
>>>
>>> It seems that Jens' suggestion is fine, but in case I am looking for
>>> a few more idiot-proof safeguards.
>>>
>>> By the way, I am working on Win95.
>>>
>>>
>>>
>>> _______________________________________________
>>> Python-win32 mailing list
>>> Python-win32@python.org
>>> http://mail.python.org/mailman/listinfo/python-win32
>>
>>
>>
>> -- 
>> Jens B. Jorgensen
>> jens.jorgensen@tallan.com
>>
>> "With a focused commitment to our clients and our people, we deliver 
>> value through customized technology solutions"
>>
>>
>
>
> _______________________________________________
> Python-win32 mailing list
> Python-win32@python.org
> http://mail.python.org/mailman/listinfo/python-win32


-- 
Jens B. Jorgensen
jens.jorgensen@tallan.com

"With a focused commitment to our clients and our people, we deliver value through customized technology solutions"  



--------------ms050003090509040709030608
Content-Type: application/x-pkcs7-signature; name="smime.p7s"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="smime.p7s"
Content-Description: S/MIME Cryptographic Signature

MIAGCSqGSIb3DQEHAqCAMIACAQExCzAJBgUrDgMCGgUAMIAGCSqGSIb3DQEHAQAAoIIJmjCC
AyswggKUoAMCAQICAwdmRzANBgkqhkiG9w0BAQQFADCBkjELMAkGA1UEBhMCWkExFTATBgNV
BAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMQ8wDQYDVQQKEwZUaGF3dGUx
HTAbBgNVBAsTFENlcnRpZmljYXRlIFNlcnZpY2VzMSgwJgYDVQQDEx9QZXJzb25hbCBGcmVl
bWFpbCBSU0EgMjAwMC44LjMwMB4XDTAyMDUwNjE0NDQ0MVoXDTAzMDUwNjE0NDQ0MVowZjES
MBAGA1UEBBMJSm9yZ2Vuc2VuMQ0wCwYDVQQqEwRKZW5zMRcwFQYDVQQDEw5KZW5zIEpvcmdl
bnNlbjEoMCYGCSqGSIb3DQEJARYZamVucy5qb3JnZW5zZW5AdGFsbGFuLmNvbTCCASIwDQYJ
KoZIhvcNAQEBBQADggEPADCCAQoCggEBALpRu41RjbKdgKkVQ4+0r38pZjxYFENSvBSQDup8
NBBC1Dj9oUkuEHuwJYg0jjYO4GdOT2QBhozGP+MUuxqYXQv2Kd0gP9lkSMhCkn+XggvEnWb/
nbs8J8bYV2Od5juy5i+qXvkyTJ1F7wRACInEMyHZIOR5/z0OPycnhxOxLpzHf0bqjJQj5GVj
vig+42VGFM3/p/pialli3DXQWJnkcFIy5sTZKK4ussztU1wBCXyMm0SdXjXTcxXjGnRRBO4D
j+ACe4jn6NsEMvJF+89iA8pyWNQQYch9QiC3gfwxtauUvJPFnPfmYAknQSMpgAuUl1ORUz6p
hHN/R143i5AIeIkCAwEAAaM2MDQwJAYDVR0RBB0wG4EZamVucy5qb3JnZW5zZW5AdGFsbGFu
LmNvbTAMBgNVHRMBAf8EAjAAMA0GCSqGSIb3DQEBBAUAA4GBAEEPvKr3A9pLwIHD08Jx+SzY
l3fWSOz92+hiHTIfgY0MkdPgzd59BylMiXcbsW0h/TGKpJgColgwsMvL8D5REMvtqlccPyRv
hOvP1Mi5mDt+9wJt2+Upd3sTp5KyxPSPVTRk4y43byrGDnEch0t2dD1Z5eaKSOrAc0InpUFo
F3sRMIIDKzCCApSgAwIBAgIDB2ZHMA0GCSqGSIb3DQEBBAUAMIGSMQswCQYDVQQGEwJaQTEV
MBMGA1UECBMMV2VzdGVybiBDYXBlMRIwEAYDVQQHEwlDYXBlIFRvd24xDzANBgNVBAoTBlRo
YXd0ZTEdMBsGA1UECxMUQ2VydGlmaWNhdGUgU2VydmljZXMxKDAmBgNVBAMTH1BlcnNvbmFs
IEZyZWVtYWlsIFJTQSAyMDAwLjguMzAwHhcNMDIwNTA2MTQ0NDQxWhcNMDMwNTA2MTQ0NDQx
WjBmMRIwEAYDVQQEEwlKb3JnZW5zZW4xDTALBgNVBCoTBEplbnMxFzAVBgNVBAMTDkplbnMg
Sm9yZ2Vuc2VuMSgwJgYJKoZIhvcNAQkBFhlqZW5zLmpvcmdlbnNlbkB0YWxsYW4uY29tMIIB
IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAulG7jVGNsp2AqRVDj7SvfylmPFgUQ1K8
FJAO6nw0EELUOP2hSS4Qe7AliDSONg7gZ05PZAGGjMY/4xS7GphdC/Yp3SA/2WRIyEKSf5eC
C8SdZv+duzwnxthXY53mO7LmL6pe+TJMnUXvBEAIicQzIdkg5Hn/PQ4/JyeHE7EunMd/RuqM
lCPkZWO+KD7jZUYUzf+n+mJqWWLcNdBYmeRwUjLmxNkori6yzO1TXAEJfIybRJ1eNdNzFeMa
dFEE7gOP4AJ7iOfo2wQy8kX7z2IDynJY1BBhyH1CILeB/DG1q5S8k8Wc9+ZgCSdBIymAC5SX
U5FTPqmEc39HXjeLkAh4iQIDAQABozYwNDAkBgNVHREEHTAbgRlqZW5zLmpvcmdlbnNlbkB0
YWxsYW4uY29tMAwGA1UdEwEB/wQCMAAwDQYJKoZIhvcNAQEEBQADgYEAQQ+8qvcD2kvAgcPT
wnH5LNiXd9ZI7P3b6GIdMh+BjQyR0+DN3n0HKUyJdxuxbSH9MYqkmAKiWDCwy8vwPlEQy+2q
Vxw/JG+E68/UyLmYO373Am3b5Sl3exOnkrLE9I9VNGTjLjdvKsYOcRyHS3Z0PVnl5opI6sBz
QielQWgXexEwggM4MIICoaADAgECAhBmRXK3zHT1z2N2RYTQLpEBMA0GCSqGSIb3DQEBBAUA
MIHRMQswCQYDVQQGEwJaQTEVMBMGA1UECBMMV2VzdGVybiBDYXBlMRIwEAYDVQQHEwlDYXBl
IFRvd24xGjAYBgNVBAoTEVRoYXd0ZSBDb25zdWx0aW5nMSgwJgYDVQQLEx9DZXJ0aWZpY2F0
aW9uIFNlcnZpY2VzIERpdmlzaW9uMSQwIgYDVQQDExtUaGF3dGUgUGVyc29uYWwgRnJlZW1h
aWwgQ0ExKzApBgkqhkiG9w0BCQEWHHBlcnNvbmFsLWZyZWVtYWlsQHRoYXd0ZS5jb20wHhcN
MDAwODMwMDAwMDAwWhcNMDQwODI3MjM1OTU5WjCBkjELMAkGA1UEBhMCWkExFTATBgNVBAgT
DFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMQ8wDQYDVQQKEwZUaGF3dGUxHTAb
BgNVBAsTFENlcnRpZmljYXRlIFNlcnZpY2VzMSgwJgYDVQQDEx9QZXJzb25hbCBGcmVlbWFp
bCBSU0EgMjAwMC44LjMwMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDeMzKmY8cJJUU+
0m54J2eBxdqIGYKXDuNEKYpjNSptcDz63K737nRvMLwzkH/5NHGgo22Y8cNPomXbDfpL8dbd
YaX5hc1VmjUanZJ1qCeu2HL5ugL217CR3hzpq+AYA6h8Q0JQUYeDPPA5tJtUihOH/7ObnUlm
AC0JieyUa+mhaQIDAQABo04wTDApBgNVHREEIjAgpB4wHDEaMBgGA1UEAxMRUHJpdmF0ZUxh
YmVsMS0yOTcwEgYDVR0TAQH/BAgwBgEB/wIBADALBgNVHQ8EBAMCAQYwDQYJKoZIhvcNAQEE
BQADgYEAMbFLR135AXHl9VNsXXnWPZjAJhNigSKnEvgilegbSbcnewQ5uvzm8iTrkfq97A0q
OPdQVahs9w2tTBu8A/S166JHn2yiDFiNMUIJEWywGmnRKxKyQF1q+XnQ6i4l3Yrk/NsNH50C
81rbyjz2ROomaYd/SJ7OpZ/nhNjJYmKtBcYxggMnMIIDIwIBATCBmjCBkjELMAkGA1UEBhMC
WkExFTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMQ8wDQYDVQQK
EwZUaGF3dGUxHTAbBgNVBAsTFENlcnRpZmljYXRlIFNlcnZpY2VzMSgwJgYDVQQDEx9QZXJz
b25hbCBGcmVlbWFpbCBSU0EgMjAwMC44LjMwAgMHZkcwCQYFKw4DAhoFAKCCAWEwGAYJKoZI
hvcNAQkDMQsGCSqGSIb3DQEHATAcBgkqhkiG9w0BCQUxDxcNMDIwODE3MDUwNDQzWjAjBgkq
hkiG9w0BCQQxFgQUTRMToHEdDN5UcTsK7Ceno8YPNVYwUgYJKoZIhvcNAQkPMUUwQzAKBggq
hkiG9w0DBzAOBggqhkiG9w0DAgICAIAwDQYIKoZIhvcNAwICAUAwBwYFKw4DAgcwDQYIKoZI
hvcNAwICASgwga0GCyqGSIb3DQEJEAILMYGdoIGaMIGSMQswCQYDVQQGEwJaQTEVMBMGA1UE
CBMMV2VzdGVybiBDYXBlMRIwEAYDVQQHEwlDYXBlIFRvd24xDzANBgNVBAoTBlRoYXd0ZTEd
MBsGA1UECxMUQ2VydGlmaWNhdGUgU2VydmljZXMxKDAmBgNVBAMTH1BlcnNvbmFsIEZyZWVt
YWlsIFJTQSAyMDAwLjguMzACAwdmRzANBgkqhkiG9w0BAQEFAASCAQBN+uMKqZTtOecKDI2V
KHgUio1+uWEgoIaY9VwEhdMwhJFnGXoitTCvq7XYPVWUSEWHLp//E2mFroEsaTDGEm+omKKW
StFt1yA2t4ycy9/JafwlYRaOFXFuKW/1oBfDQMxk6XOgHv/5o4V79OLLqDKpRrt3tM+DY8St
27yUnp+0VJeFpOiPQVSvEOMiY9xdDucPlp3g3LeGwBxcqJts6mI+6YyFakEdF3uFDTe6rTov
D4FC0mHvHv67swIERh+Ei81n3RHhZiwUIu6NGhFNAIf2XupVcrs9eRHz0m4VR2UcfdGwINha
icRpKO5cSAKEw8ZvzAOJlvwchMHETehDk2ceAAAAAAAA
--------------ms050003090509040709030608--