geoff wrote:
I am hoping someone could steer me in the right direction on how to
calculate the amount of RAM available to a process.
I found the post below from Tim Roberts - a belated thanks Tim for
your patient responses ! and it seems we regularly hit this limit.
We have an application
any web articles about this. Very interesting...
--
Tim Roberts, t...@probo.com
Providenza Boekelheide, Inc.
___
python-win32 mailing list
python-win32@python.org
http://mail.python.org/mailman/listinfo/python-win32
GlobalMemoryStatusEx():
x = MEMORYSTATUSEX()
x.dwLength = sizeof(x)
windll.kernel32.GlobalMemoryStatusEx(byref(x))
return x
z = GlobalMemoryStatusEx()
print z.ullAvailVirtual
--
Tim Roberts, t...@probo.com
Providenza Boekelheide, Inc
RAM, your process can
still allocate up to 2GB of memory.
--
Tim Roberts, t...@probo.com
Providenza Boekelheide, Inc.
___
python-win32 mailing list
python-win32@python.org
http://mail.python.org/mailman/listinfo/python-win32
that, if the
page file gets low, the system will allocate more.
--
Tim Roberts, t...@probo.com
Providenza Boekelheide, Inc.
___
python-win32 mailing list
python-win32@python.org
http://mail.python.org/mailman/listinfo/python-win32
of physical memory is reserved for non-paged
pool in the kernel, which is used by drivers for critical buffers and
for DMA, among other things. Thus, you can be out of paged pool even
when there is unused physical memory remaining.
Virtual memory is a surprisingly difficult thing to nail down.
--
Tim
manifest override it? I'm not sure the answer is written
down anywhere.
Side-by-side is an abortion. It is an incredibly baroque solution to a
problem that programmers outside of Redmond learned how to handle more
than a decade ago.
--
Tim Roberts, t...@probo.com
Providenza Boekelheide, Inc
version would still work on my xp64 platform.
If you install 32-bit Python, then the 32-bit add-ons continue to work
just as they always have.
If you install 64-bit Python, then you need 64-bit add-ons. Numpy, at
least, uses C extensions.
--
Tim Roberts, t...@probo.com
Providenza Boekelheide
integer as an error number, but that's what they're doing.
As Mark said, pywin32 doesn't support VT_UI8 at all. There may be a
hacky way to do this with comtypes.
--
Tim Roberts, t...@probo.com
Providenza Boekelheide, Inc.
___
python-win32 mailing list
(they are Win 7 only), so I seriously doubt anyone has
played with them enough to know whether they do IDispatch.
If they don't, it's always (well, almost always) possible to handle
these with ctypes and comtypes.
--
Tim Roberts, t...@probo.com
Providenza Boekelheide, Inc
ctypes to call DWriteCreateFactory, and
ctypes/comtypes to call the member functions.
Are you sure you want to do this? ;) Until someone writes a wrapper
layer, it would probably be more productive for you to use C++.
--
Tim Roberts, t...@probo.com
Providenza Boekelheide, Inc
.
--
Tim Roberts, t...@probo.com
Providenza Boekelheide, Inc.
___
python-win32 mailing list
python-win32@python.org
http://mail.python.org/mailman/listinfo/python-win32
this redirection by calling RegDisableReflectionKey for
the key you want to talk to. I do not know if this is exposed in _winreg.
--
Tim Roberts, t...@probo.com
Providenza Boekelheide, Inc.
___
python-win32 mailing list
python-win32@python.org
http://mail.python.org
Tim Roberts wrote:
Ben wrote:
I have generally been getting better results using winreg than using WMI,
but even Winreg (or config problems on our server) are causing me
problems. For example I'd use this code to find out if a certain
I'm beginning to think this is because
of tasks, requiring very different approaches.
The more specific you can be, the better the advice we can offer.
--
Tim Roberts, t...@probo.com
Providenza Boekelheide, Inc.
___
python-win32 mailing list
python-win32@python.org
http://mail.python.org
font is actually
called Times New Roman. There is a substitution list for common
font names, but I'm not sure I'd want to rely on it.
--
Tim Roberts, t...@probo.com
Providenza Boekelheide, Inc.
___
python-win32 mailing list
python-win32@python.org
this?
Also i want to know if wmi module is availble for IA64
There is virtually no real development going on for IA64, because there
are virtually no sales of IA64 systems.
--
Tim Roberts, t...@probo.com
Providenza Boekelheide, Inc.
___
python-win32
.
The Win32 extensions to Python live in import packages that are not
called win32.
Now, it is QUITE possible that the IDE you are using has its own
extension called win32. If so, we wouldn't know anything about that
in this forum. You'd have to check the IDE's documentation.
--
Tim Roberts, t
that, in
virtually every case it is an ignorant rendition of the French word
Voila! I'm amazed that a real company would choose that as a name.
--
Tim Roberts, t...@probo.com
Providenza Boekelheide, Inc.
___
python-win32 mailing list
python-win32
. Instead, it creates a whole series
of movable toolbars, one of which happens to look like a menu.
What are you actually trying to do?
--
Tim Roberts, t...@probo.com
Providenza Boekelheide, Inc.
___
python-win32 mailing list
python-win32@python.org
the Internet Explorer object model, to see if you can use that COM
object you already created to access the tools through function call
instead.
--
Tim Roberts, t...@probo.com
Providenza Boekelheide, Inc.
___
python-win32 mailing list
python-win32
. This is a Python wrapper around the
Microsoft Active Accessibility library.
http://www.cs.unc.edu/Research/assist/developer.shtml
--
Tim Roberts, t...@probo.com
Providenza Boekelheide, Inc.
___
python-win32 mailing list
python-win32@python.org
http
:
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall
Every subkey represents an app or update that can be uninstalled, and
each key contains an UninstallString value that gives you the command to
execute to do the uninstall.
--
Tim Roberts, t...@probo.com
Providenza Boekelheide, Inc
had extra files in the folder that weren't installed by the
installer. Most uninstall apps will not delete the root folder if it
contains files that were created after installation time.
--
Tim Roberts, t...@probo.com
Providenza Boekelheide, Inc
this might be easier in C.
--
Tim Roberts, t...@probo.com
Providenza Boekelheide, Inc.
___
python-win32 mailing list
python-win32@python.org
http://mail.python.org/mailman/listinfo/python-win32
of the top-level windows using EnumWindows, then
call GetWindowThreadProcessId until you find a window that matches.
Remember that an application can have several top-level windows.
--
Tim Roberts, t...@probo.com
Providenza Boekelheide, Inc.
___
python-win32
to do, in detail.
--
Tim Roberts, t...@probo.com
Providenza Boekelheide, Inc.
___
python-win32 mailing list
python-win32@python.org
http://mail.python.org/mailman/listinfo/python-win32
here?
--
Tim Roberts, t...@probo.com
Providenza Boekelheide, Inc.
___
python-win32 mailing list
python-win32@python.org
http://mail.python.org/mailman/listinfo/python-win32
to a web server.
--
Tim Roberts, t...@probo.com
Providenza Boekelheide, Inc.
___
python-win32 mailing list
python-win32@python.org
http://mail.python.org/mailman/listinfo/python-win32
of
experimentation, but it might be possible.
--
Tim Roberts, t...@probo.com
Providenza Boekelheide, Inc.
___
python-win32 mailing list
python-win32@python.org
http://mail.python.org/mailman/listinfo/python-win32
that
command you already showed. You can use subprocess.call to run that
command and wait for the result.
--
Tim Roberts, t...@probo.com
Providenza Boekelheide, Inc.
___
python-win32 mailing list
python-win32@python.org
http://mail.python.org/mailman/listinfo
either
need to double the backslashes:
cmd = 'idlede.exe ... -nosplash @C:\\SAMIR\\soil.run'
or use the r syntax:
cmd = r'idlede.exe ... @C:\SAMIR\soil.run'
--
Tim Roberts, t...@probo.com
Providenza Boekelheide, Inc.
___
python-win32 mailing
problem is I didn’t found the python module for
GetBitmapBits() function ...
How much looking have you done? Did you know that the PyWin32
win32\Demos directory contains several example of programs that
manipulate icons, including one that calls ExtractIconEx and draws the
icon to a bitmap?
--
Tim
a usable image.
--
Tim Roberts, t...@probo.com
Providenza Boekelheide, Inc.
___
python-win32 mailing list
python-win32@python.org
http://mail.python.org/mailman/listinfo/python-win32
, hicon is use ton create the variable nid and re use it to
display on the screen, but i want get only the bitmap bits.
I'm not sure why you think these two things are different. The way you
get the bitmap bits is to draw the icon on a bitmap.
--
Tim Roberts, t...@probo.com
Providenza
with a hex editor to figure out
what it really contains.
If you want, you could send me one of the files, and a detailed
description of what you want out of them. Perhaps we can come with a
data structure that's easier to work with.
--
Tim Roberts, t...@probo.com
Providenza Boekelheide, Inc
','wb').write ('\x1c'.join(newsections) )
But that assumes there's nothing in that garbage 3rd section that needs
to be changed.
It's just a matter of dividing the problem up into smaller problems
until the solution pops out.
--
Tim Roberts, t...@probo.com
Providenza Boekelheide, Inc
Nicolas EISEN wrote:
Tim Roberts a écrit :
EISEN Nicolas wrote:
I'm lucky, I found ...
My Source :
/from win32gui import *
import win32con
from pywintypes import HANDLE
import win32ui listHicon = ExtractIconEx(c:\OpenOffice.exe,0)
tupleIcon = GetIconInfo
results in indefinite because it has no
defined meaning.
--
Tim Roberts, t...@probo.com
Providenza Boekelheide, Inc.
___
python-win32 mailing list
python-win32@python.org
http://mail.python.org/mailman/listinfo/python-win32
back to a new file.
part1 = '\x1D'.join( sect1 )
part2 = '\x1D'.join( sect2 )
recreate = '\x1C'.join( [part1, part2, sections[-1]] )
open( 'newfile.nst','wb' ).write( recreate )
--
Tim Roberts, t...@probo.com
Providenza Boekelheide, Inc
) to
find out what functions are available in a DC?
hdc.FillSolidRect( (0,0, ico_x, ico_y), 0xff )
--
Tim Roberts, t...@probo.com
Providenza Boekelheide, Inc.
___
python-win32 mailing list
python-win32@python.org
http://mail.python.org/mailman
will automatically pull in whatever pieces of pywin32 are
necessary to make your script run.
--
Tim Roberts, t...@probo.com
Providenza Boekelheide, Inc.
___
python-win32 mailing list
python-win32@python.org
http://mail.python.org/mailman/listinfo/python
this risk (we currently use Office2003 on WinXP)?
With very few exceptions, Microsoft never removes a documented API. The
risks, although not zero, are very slight.
The same cannot be about, for example, Adobe...
--
Tim Roberts, t...@probo.com
Providenza Boekelheide, Inc
a succinct test case
that I can share.
I would be interested in looking at it.
--
Tim Roberts, t...@probo.com
Providenza Boekelheide, Inc.
___
python-win32 mailing list
python-win32@python.org
http://mail.python.org/mailman/listinfo/python-win32
to assert
the stop_event event, which the SvcDoRun function is blocked on.
That's the normal way. SvcStop sets an event, which allows SvcDoRun to
return. When SvcDoRun returns, the service exits. However, the
sys.exit method also works. It's just that you get this little traceback
--
Tim Roberts
. That's how it
knows which file to load and which class to instantiate.
--
Tim Roberts, t...@probo.com
Providenza Boekelheide, Inc.
___
python-win32 mailing list
python-win32@python.org
http://mail.python.org/mailman/listinfo/python-win32
this:
ans = [1,2,3]
(rc,ans) = Server.EchoArray([0x11,0x22,0x33])
print ans
--
Tim Roberts, t...@probo.com
Providenza Boekelheide, Inc.
___
python-win32 mailing list
python-win32@python.org
http://mail.python.org/mailman/listinfo/python-win32
/setproxy.html
This might be a good excuse to force your stragglers into the domain.
There is certainly good justification for doing so.
--
Tim Roberts, t...@probo.com
Providenza Boekelheide, Inc.
___
python-win32 mailing list
python-win32@python.org
and deserialize Python data structures.
--
Tim Roberts, t...@probo.com
Providenza Boekelheide, Inc.
___
python-win32 mailing list
python-win32@python.org
http://mail.python.org/mailman/listinfo/python-win32
this file:
123,3-10,3-10,=3-10,=3-10
gets imported as
12310-Mar10-Mar-73-10
Again, however, this is just an Excel quirk. If you need to import into
Excel a lot, you might consider switching to Excel's XML format. You
have a great deal more control in that case.
--
Tim
also need this before the Set call:
extended_limits['BasicLimitInformation']['Limit_Flags'] +=
win32job.JOB_OBJECT_LIMIT_JOB_MEMORY
What do you plan to do with this? In 20 years of Windows programming,
I've never once used the Job APIs.
--
Tim Roberts, t...@probo.com
Providenza Boekelheide
window messages from the
outside. The Office applications don't use separate windows for their
controls; their windows are just one big empty canvas, where everything
is painted internally.
--
Tim Roberts, t...@probo.com
Providenza Boekelheide, Inc
passages, all alike. It is a
complicated and not well known part of the Windows API, and you will end
up doing a lot of very frustrating experimentation.
--
Tim Roberts, t...@probo.com
Providenza Boekelheide, Inc.
___
python-win32 mailing list
python
Emin.shopper Martinian.shopper wrote:
On Mon, Jun 1, 2009 at 1:32 PM, Tim Roberts t...@probo.com wrote:
Emin.shopper Martinian.shopper wrote:
Dear Experts,
Can someone provide an example of how to use CreateProcessWithLogonW?
It's really just a combination of LogonUser
have quite a number
of extra packages installed, and my entire Python directory is only 133
megabytes. At today's disk prices, that's less than 8 cents worth of
disk space.
--
Tim Roberts, t...@probo.com
Providenza Boekelheide, Inc.
___
python-win32
set up properly (by
calling vcvarsall.bat or vcvars32.bat, depending on the version), it's
just a matter of calling the command line compiler using subprocess or
os.system:
cl source.c
--
Tim Roberts, t...@probo.com
Providenza Boekelheide, Inc
for creating symbolic links).
Hmm. Does the API return anything in those cases?
--
Tim Roberts, t...@probo.com
Providenza Boekelheide, Inc.
___
python-win32 mailing list
python-win32@python.org
http://mail.python.org/mailman/listinfo/python-win32
--
Tim Roberts, t...@probo.com
Providenza Boekelheide, Inc.
___
python-win32 mailing list
python-win32@python.org
http://mail.python.org/mailman/listinfo/python-win32
.bat'
print fbat, 'msbuild myproject.sln'
fbat.close()
os.system( xxx.bat )
os.remove( xxx.bat )
Note that you will need extra quotes when the path includes spaces.
Note also the escaped backslash characters.
--
Tim Roberts, t...@probo.com
Providenza Boekelheide, Inc
on Environment Variables
Although this is true, the better solution for a h is to create a
batch file and run that. The batch file then runs as its own process,
so that environment changes remain with the process.
--
Tim Roberts, t...@probo.com
Providenza Boekelheide, Inc
. However, when you exit,
all of your changes evaporate with your process. The parent process,
whatever it is, continues to exist with the environment it had before.
--
Tim Roberts, t...@probo.com
Providenza Boekelheide, Inc.
___
python-win32 mailing
Vernon Cole wrote:
Thanks, Tim!
Should this be logged against the standard library as a bug?
Nope. It's actually the documented behavior. See section 16.1.1 here:
http://docs.python.org/library/os.html
--
Tim Roberts, t...@probo.com
Providenza Boekelheide, Inc
.Wow64EnableWow64FsRedirection( wow64 )
--
Tim Roberts, t...@probo.com
Providenza Boekelheide, Inc.
___
python-win32 mailing list
python-win32@python.org
http://mail.python.org/mailman/listinfo/python-win32
have more work ahead of you. You'll have to create a
window and a message loop using one of the Python GUI toolkits.
--
Tim Roberts, t...@probo.com
Providenza Boekelheide, Inc.
___
python-win32 mailing list
python-win32@python.org
http://mail.python.org
.OutputDebugString and using a
kernel debug log monitor to read them.
--
Tim Roberts, t...@probo.com
Providenza Boekelheide, Inc.
___
python-win32 mailing list
python-win32@python.org
http://mail.python.org/mailman/listinfo/python-win32
exactly what you want to do. It's perfectly safe. The kernel
monitors that process and restarts it when it dies.
--
Tim Roberts, t...@probo.com
Providenza Boekelheide, Inc.
___
python-win32 mailing list
python-win32@python.org
http://mail.python.org
to a temporary
directory and launches the interpreter as usual.
--
Tim Roberts, t...@probo.com
Providenza Boekelheide, Inc.
___
python-win32 mailing list
python-win32@python.org
http://mail.python.org/mailman/listinfo/python-win32
the
reported times to change during summer time.
--
Tim Roberts, t...@probo.com
Providenza Boekelheide, Inc.
___
python-win32 mailing list
python-win32@python.org
http://mail.python.org/mailman/listinfo/python-win32
any member of the ...
I have to say, your messages carry the most obnoxious legal disclaimer
I've encountered in a long, long time. The efficacy of such disclaimers
has never been established in court, to my knowledge.
--
Tim Roberts, t...@probo.com
Providenza Boekelheide, Inc
.
--
Tim Roberts, t...@probo.com
Providenza Boekelheide, Inc.
___
python-win32 mailing list
python-win32@python.org
http://mail.python.org/mailman/listinfo/python-win32
arbitrary evt files.
This call also requires the system name as the first argument.
int = OpenBackupEventLog(serverName, fileName )
Or None. You have to read the documentation.
--
Tim Roberts, t...@probo.com
Providenza Boekelheide, Inc
1 entry if I read backwards, and 2 if I read forwards.
I shall experiment.
--
Tim Roberts, t...@probo.com
Providenza Boekelheide, Inc.
___
python-win32 mailing list
python-win32@python.org
http://mail.python.org/mailman/listinfo/python-win32
:
break
for event in events:
print event.EventID, event.StringInserts
then it all works as expected.
--
Tim Roberts, t...@probo.com
Providenza Boekelheide, Inc.
___
python-win32 mailing list
python-win32@python.org
http
if it
behaves differently. The code in pywin32 doesn't do that much
processing -- it's mostly passthrough.
--
Tim Roberts, t...@probo.com
Providenza Boekelheide, Inc.
___
python-win32 mailing list
python-win32@python.org
http://mail.python.org/mailman/listinfo
of the .evt file
is the same, no matter which log it came from. You are reading an .evt
file, and not the live log, right?
--
Tim Roberts, t...@probo.com
Providenza Boekelheide, Inc.
___
python-win32 mailing list
python-win32@python.org
http
) and see if it reads all 6 messages. If it only
gets 3, then there is some fundamental issue below the Python stuff.
--
Tim Roberts, t...@probo.com
Providenza Boekelheide, Inc.
___
python-win32 mailing list
python-win32@python.org
http://mail.python.org
Tony Cappellini wrote:
Tim, would you try parsing the SystemEventLog (from Windows XP)?
This is the one I'm having problems with, not the application log.
I saved a copy of my system event log with 2,383 events, and I'm able to
read all 2,383 events.
--
Tim Roberts, t...@probo.com
.
--
Tim Roberts, t...@probo.com
Providenza Boekelheide, Inc.
___
python-win32 mailing list
python-win32@python.org
http://mail.python.org/mailman/listinfo/python-win32
win32process.GetModuleFileNameEx( handle, 0 )
--
Tim Roberts, t...@probo.com
Providenza Boekelheide, Inc.
___
python-win32 mailing list
python-win32@python.org
http://mail.python.org/mailman/listinfo/python-win32
into Python code, but once you get the pattern, that's not so
hard.
--
Tim Roberts, t...@probo.com
Providenza Boekelheide, Inc.
___
python-win32 mailing list
python-win32@python.org
http://mail.python.org/mailman/listinfo/python-win32
at the list of methods?
That's not reliable with COM objects, unless you have used makepy on
them. The win32com stuff doesn't go query the complete list of methods
and properties. When you ask for one, it checks for it, and will
remember that for later.
--
Tim Roberts, t...@probo.com
Providenza
we can translate it for you.
--
Tim Roberts, t...@probo.com
Providenza Boekelheide, Inc.
___
python-win32 mailing list
python-win32@python.org
http://mail.python.org/mailman/listinfo/python-win32
. Then, when
you run the app, the DLL must be accessible somewhere. Does the build
process try to test the extensions?
--
Tim Roberts, t...@probo.com
Providenza Boekelheide, Inc.
___
python-win32 mailing list
python-win32@python.org
http
extension.
--
Tim Roberts, t...@probo.com
Providenza Boekelheide, Inc.
___
python-win32 mailing list
python-win32@python.org
http://mail.python.org/mailman/listinfo/python-win32
into the
ActiveX method?
Whatever you do is going to be a hack, because it's not declared in a
COM-safe manner, but I suspect you're on the right track with the ctypes
scheme.
--
Tim Roberts, t...@probo.com
Providenza Boekelheide, Inc.
___
python-win32 mailing
you create a program that does the same thing.
--
Tim Roberts, t...@probo.com
Providenza Boekelheide, Inc.
___
python-win32 mailing list
python-win32@python.org
http://mail.python.org/mailman/listinfo/python-win32
), some from
enumerations (EnumChildWindows), and so on.
So, if you can tell us how YOU would tell the difference, we can suggest
which APIs you can use to find those attributes.
--
Tim Roberts, t...@probo.com
Providenza Boekelheide, Inc.
___
python
a
little clarification.
--
Tim Roberts, t...@probo.com
Providenza Boekelheide, Inc.
___
python-win32 mailing list
python-win32@python.org
http://mail.python.org/mailman/listinfo/python-win32
= RhinoScript(RS)
RS.AddLine((0,0,0), (1,1,1))
None of us can try this unless we have the Rhino4 application
installed. What do you see?
--
Tim Roberts, t...@probo.com
Providenza Boekelheide, Inc.
___
python-win32 mailing list
python-win32
that it
requires Windows Terminal
Services loaded (which I don't have running).
Starting with XP, all systems run with Windows Terminal Services
enabled. That's how fast user switching is implemented, among other things.
--
Tim Roberts, t...@probo.com
Providenza Boekelheide, Inc
?
Assuming you can register yourself as an event sink, there is a
Worksheet_Calculate event that gets fired any time Excel recalculates a
cell. However, it gets hit an awful lot.
--
Tim Roberts, t...@probo.com
Providenza Boekelheide, Inc.
___
python-win32
sync examples in Python?
I found quite a few, most using the very handy comtypes module:
http://www.lmgtfy.com/?q=python+excel+event+sink
--
Tim Roberts, t...@probo.com
Providenza Boekelheide, Inc.
___
python-win32 mailing list
python-win32
are equivalent.
--
Tim Roberts, t...@probo.com
Providenza Boekelheide, Inc.
___
python-win32 mailing list
python-win32@python.org
http://mail.python.org/mailman/listinfo/python-win32
this:
PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.py;.pyw
Now you can type makepy, and the shell will find and execute
makepy.py. It is a very handy little tweak.
--
Tim Roberts, t...@probo.com
Providenza Boekelheide, Inc.
___
python-win32
. You need
pointer(pCounterPathElements).
After that, pcchbufferSize is 89 for me.
--
Tim Roberts, t...@probo.com
Providenza Boekelheide, Inc.
___
python-win32 mailing list
python-win32@python.org
http://mail.python.org/mailman/listinfo/python-win32
on the stack,
not through a pointer), ctypes also supports it.
--
Tim Roberts, t...@probo.com
Providenza Boekelheide, Inc.
___
python-win32 mailing list
python-win32@python.org
http://mail.python.org/mailman/listinfo/python-win32
process of that command window.
If you don't want the command window at all, just call pythonw instead
of python. Then, you should be able to kill the Python process directly.
--
Tim Roberts, t...@probo.com
Providenza Boekelheide, Inc.
___
python-win32
the python instance to Run method
rather than the COM instance?
No. The more likely answer is that the Run command failed because the
file name was invalid, so o.Test is not returning a real object.
--
Tim Roberts, t...@probo.com
Providenza Boekelheide, Inc
, a boolean, and a COM
interface, returning void. The parameter you're passing is getting sent
in as the ResultsOption. Is there any change if you pass None as the
first parameter? (There shouldn't be...)
--
Tim Roberts, t...@probo.com
Providenza Boekelheide, Inc
?
--
Tim Roberts, t...@probo.com
Providenza Boekelheide, Inc.
___
python-win32 mailing list
python-win32@python.org
http://mail.python.org/mailman/listinfo/python-win32
401 - 500 of 1146 matches
Mail list logo