Is there any way to 'zoom' the window,
I don't think that there is any.
or would anyone recommend a better layout editor?
Well, the form editor of PODS has a limited zoom of 1, 1.5 and 2 times. Its
bitmap/icon editor can zoom anywhere between 1 and 16 times.
Plus, it keeps the resources in
I'll mail you off-list on this, as I need to investigate the extent
to which I'm limited by an NDA on my original Palm OS 5 work in
regards to my giving away my Palm OS 4 work.
This might simplify the things a bit - you don't have to send me your PalmOS
5-related work. I think by now I have a
Hello folks,
OK, I have implemented interception of application launching in PalmOS 5.x
only, using the Notification Manager and registering to receive notifications
for the sysNotifyAppLaunchingEvent.
However, this event is, apparently, broadcase only only on application launch
but also on
OK, folks, I keep digging. :-) I was pointed to the following Japanese article:
http://salon.simple-palm.com/os5/os5_04/
For those of us who can't read Japanese, here's a rough English translation of
it:
http://tinyurl.com/3jrx6
Apparently, the author of the Avast application I mentioned
OK, in order to intercept application launching in PalmOS 3.x and 4.x, one uses
a hack that patches the system trap 0xA0A7.
In PalmOS 5.x, one does it by registering with the Notification Manager to
receive notifications about the sysNotifyAppLaunchingEvent event.
However,
Hello folks,
More questions about interception. :-)
One of the things I want my application to do, is to detect that a memory
expansion card has been inserted in the device, in order to do something about
the contents of this card.
It is my understanding that in PalmOS 5.x, this can be done
Hello folks,
Still more questions about interception. :-)
One of the things I want my application to do, is to detect that a HotSync
operation has just completed, in order to do something about the (possibly new)
content of the device.
It is my understanding that one can do that in PalmOS 5.x
Hello folks,
Another interception question. :-)
I want, each time an application is beamed to the device, my application on
that device to intercept this fact, to examine the application that is being
beamed to the device and, depending on the result of the examination, to either
accept the
System trap patches don't survive system reset. If you aren't
catching the I just got reset launch code and reestablishing
your patches, your program will be pretty easy to disable.
OK, my bad - as it turns out, I *was* catching the reset. I listen to the
sysAppLaunchCmdSystemReset launch
Exactly the same you do it in OS5.
Uh, how so? It is my understanding that PalmOS before 5.0 does not *have* a
Notification Manager - so, obviously I cannot use it to register to receive
notifications about the sysNotifyCardInsertedEvent event.
Regards,
Vesselin
--
For information on using
Curioser and curioser...
I just wrote a small test program that creates a large memo, in order to check
how MemoPad behaves when it is told to open such a memo.
Apparenly, under PalmOS 3.5 (the emulator), MemoPad has absolutely no problems
*opening* the large memo or even deleting parts from
OK, I see now. The Notification Manager was implemented in PalmOS 3.5, but the
VFS Manager and the sysNotifyVolumeMountedEvent event broadcast were
implemented in PalmOS 4.0.
I guess I've been reading too much about trap patching lately - for some
reason, I had the impression that the
Well? Any hints? Anyone?
Regards,
Vesselin
--
For information on using the Palm Developer Forums, or to unsubscribe, please
see http://www.palmos.com/dev/support/forums/
Hello folks,
I want to construct a PDB database on a PC, so I need to understand the file
format of the PDB files. I've read the documentation provided by PalmSource
http://www.palmos.com/dev/support/docs/protein_books/File_Formats/Intro.html#970019
after the 80 bytes header what you have is a record index, a list
that is NumRecords length.
Yes, it is the elements of the record index that I am talking about.
The first field, LocalID is the offset of the beginning of the
respective record.
You need to calculate the record lenght
I don't think that it is possible to replace it, although it might be possible
to turn it off (it's possible on Tungsten E).
If you write an application that displays your own welcome screen and make it
do it on sysAppLaunchCmdSystemReset, that would look like a replacement.
Regards,
Vesselin
You can't. Categories are not folders/directories; think of them as labels. The
category is stored in a 4-bit field; that's why you can have only 16 of them.
Regards,
Vesselin
--
For information on using the Palm Developer Forums, or to unsubscribe, please
see
Thanks for all the help, folks. par is exactly the thing I needed - I don't
even have to look at its source to understand the PDB format; par already does
what I want. (In fact, it does just about everything but take out the cat.)
Regards,
Vesselin
--
For information on using the Palm
Thanks Vesselin, so, it would be possible to launch an app on PDA
reset?? This would work on Zire 31??
Yes, if your application does its thing on sysAppLaunchCmdSystemReset, it will
be launched on reset (but not on soft reset + up button). This will work on
everything that is running PalmOS.
Also, for having some application run automatically on startup, you might want
to look at this utility:
http://www.freewarepalm.com/utilities/autoexec.shtml
Regards,
Vesselin
--
For information on using the Palm Developer Forums, or to unsubscribe, please
see
Yes, you have to write a conduit. I've never written one myself, but it is my
understanding that it is basically a DLL, so you should be able to write it in
any language that allows you to write a DLL. (In fact, I think that a conduit
can be written in Java, too.)
Regards,
Vesselin
--
For
Hello folks,
When my application is started, the user can use its various dialogs to
navigate to its various forms. However, no matter on which of the application's
forms the user is, when s/he switches to a different application, all forms are
closed - so that the next time the user switches
I recently had to solve this very same problem. I have made an example solution
publicly available; feel free to use it:
http://www.mobile-coder.com/article/palm-list-controlled-by-scrollbar
Regards,
Vesselin
--
For information on using the Palm Developer Forums, or to unsubscribe, please
see
OK, folks, thanks for the help. I took the advice to treat the popup forms as
transient.
There were only three of them anyway - the about box, a dialog showing the
details of an entry in a list, and the application's options setting form.
Of those, the user will be irritated only if the latter
Nahh. The cost of saving two values is minimal - just another 16-bit number,
plus a few more bytes of code to initialize it (if the saved preferences don't
exist yet) and to keep it up-to-date.
If I do as you suggest, it's not the selection that will change (because that
will be remembered) -
LastStorageSnapshot=
and
StorageSnapshotFile=
maybe?
BTW, I have a similar problem with the Emulator - the saved session file (SSF)
keeps getting corrupted after a while and the Emulator refuses to use it, so I
have to resort to a backup copy.
Regards,
Vesselin
--
For information on using
Irrespective of in-line assembly syntaxes used by the compilers, I don't think
that you can do what you're trying to do in such a straightforward way.
The original, if it is assembly language for PalmOS (I haven't checked) is
assembly language for the Motorola 68K CPUs. AFAIK, the Pocket PCs
I thought that to, but how then this Palm OS aplication (from
whitch code is) working on Tungsten T5 that have same CPU 'Intel's
XScale' that is used in lot`s of Pocket PC devices. The same app.
works on Palm OS 3.5 to Palm OS 5.4 and thay all have diferent
CPU?
Well, I can't answer this
Hello folks,
One of the databases used by my application is of such kind, that it would make
sense to beam it to another device that has my application. However, I have
some trouble implementing this whole process properly.
Now, just beaming the database is not a problem. I simply do
Err
I am about to start development on an Anti-v program for the Garnet
OS, my first project under this OS.
Hi, bro. :-) I'm doing the same. Feel free to contact me privately.
I would like to know if anyone knows how to run a background
process.
Strictly speaking, you can't. Garnet is a
Is this the 'slippery slope', where the anti-v program is created
FIRST, then someone says Let me see if I can create a virus that
will spread to Palm devcies, so that I can try to defeat that
system?
Nope. Malware (one virus and several Trojan horses) for PalmOS already exists -
has existed
What a waste of time, there no viruses for Cobalt
Well, the PalmOS/Phage.A virus doesn't do anything that would prevent it from
running under Cobalt, so it ought to work there without problems. Let me try it
under the simulator...
Yup, I was right - runs without problems. For more
The structure of PalmOS is such that a virus or worm in the
classic sense, while not impossible to write, is darned difficult
to propogate.
With all due respect, this is false. It could propagate on HotSync, on beaming
of applications, on memory card insertion, via WiFi/Bluetooth/whatever,
Interesting, what are you looking for? What are the virus
signatures you 're looking for? If there is no (known) virus,
what do you sell the customers?
He mentioned Bluetooth and currently malware spreading though this mechanism is
all the rage on the Symbian platform. I suppose that he would
I have once heard of a way to get a OS5 patch trapped.
That's not a proper term - strictly speaking, you can't patch system traps
under OS5. In many cases you can achieve the same effect by registering to
receive notifications, though. See the following excellent paper on this
subject:
Have you read the Palm OS References and the Companions?
I think so. Are you referring to Volume 2, Chapter 1 of the Companion?
There is a field with a receiver for your data, which you
can use to point it to your creator id, I guess.
Yes, but the way I understood it, if you do that, when
Hello folks,
Could somebody post the directions how to locate the Tungsten E simulator on
the PalmSource Web site? I know that it exists, because I have downloaded it in
the past and have installed it on one of my computers. Now I want to install it
on another - and can't manage to locate it.
Thanks, folks, found it. Ahh, the split of Palm into two different companies
keeps causing confusions... :-( I had the impression that PalmSource was for
software and the other site was for hardware - but, I guess, since this
simulator is hardware-specific (as opposed to the generic OS
Unfortunately it is pretty obvious you don't know what to look for.
It you had that level of knowledge then you wouldn't need to ask
the question you are asking.
With all due respect, this is a flawed logical reasoning. He did not ask *what*
to look for - he asked *how* to get control, so
Well, this shows a newbie who has read one book on PalmOS
development should not chime in with authority! ;-)
:-). Oh, as far as PalmOS development is concerned, your knowledge probably
equals or even exceeds mine. Feel free to argue with me on PalmOS-related
subjects; I'm more likely than
First off, by propogate, I meant transfer itself from an
infected device to an uninfected device.
I understood you correctly the first time.
On a Hotsync, it could reinstall itself on a device, or a trojan
could be installed initially. I'm not sure how this process could
infect a *second*
I think it could be possible to write some tool which puts
itself in the first code resource, puts every old code resources
one behind, and when it's called, it reaarange all pointers etc.
to call the real PilotMain after it has done its spreading to all
other appl databases on the device.
The act of inserting a memory card does not, to my knowledge,
automatically cause the execution of any code on that memory card.
Again, please correct me if I am wrong.
OK, you're wrong. :-)
Reference:
http://www.palmos.com/dev/support/docs/palmos40/
Applications installed to the palm
OK, folks, I've read the beaming-related documentation in the Palm OS
Programming Bible and in the Palm OS Companion Vol. 2 again, trying to read
between the lines this time. I still have no clue how to do what I want - but I
am starting to understand why I couldn't figure it out the first time
Hello folks,
This all began with somebody asking me a question in private, but I need to
know this for my own purposes too.
Basically, I need some code in my application to activate when a HotSync
operation is completed. The way I understand it, in order to do this (at least
under Palm OS 3.5
Couldn't you just look for the sysAppLaunchCmdSyncNotify launch
code, instead of looking for a that notification?
No. sysAppLaunchCmdSyncNotify is a launch code that my application receives
when (a) my application is installed on the device via HotSync or (b) one of
the databases of my
Aaarrrgghh! Stupid, stupid, stupid. :-(
Note to self: If you don't initialize a variable with some value, you can't
rely on its contents making sense, amazingly as it is.
In this particular case, I had forgotten to initialize romVersion, so nothing
was registered. Here is the working version:
I'll try to address all your recent questions in a single answer.
What is the goal to switch between (enable or disable) the beam
reception at preferences?
If you disable the beaming from the preferences, the device becomes incapable
of receiving data beamed to it, until you re-enable
Hello folks,
I am trying to test the conjecture that the Emulator and the Simulators don't
send a sysAppLaunchCmdSyncNotify launch code when an application is installed
on them via drag-n-drop. For this purpose, I have written the following small
application:
#include PalmOS.h
#include
BTW, if instead of
FrmAlert (kMyAlert);
I use
SndPlaySystemSound (sndWarning);
the HotSync process doesn't hang and I do hear the sound. So, what's the
problem with displaying an alert?
Regards,
Vesselin
--
For information on using the Palm Developer Forums, or to unsubscribe, please
see
The syncNotify message isn't sent using a thread that has access
to the user interface system.
Oh, I see! Is that true only for the sysAppLaunchCmdSyncNotify launch code or
also for some other launch codes, and, if the latter - for which ones?
The way to do UI is to have your syncNotify
Perhaps check whether the VFS Manager is present?
UInt32 vfsMgrVersion;
if (FtrGet (sysFileCVFSMgr, vfsFtrIDVersion, vfsMgrVersion) != errNone)
{
// VFS Manager not present
}
else
{
// VFS Manager present - vfsMgrVersion contains version number
}
Regards,
Vesselin
--
For information on
Depending on how smooth you want it to work you may have to write a
conduit.
I've had a similar problem (converting the contents of a custom database to a
text file - although not a CSV file) and have reached the conclusion that
writing a conduit is the way to go.
1) Write the data to a
dbErr = DmGetNextDatabaseByTypeCreator(true, dbPt, 0, 0, false, cardNoP,
dbID);
//while: there are more dbs
while(!dbErr)
{
//read database, and test if its clean
//incomplete
//get next db
dbErr = DmGetNextDatabaseByTypeCreator(false, dbPt, 0, 0, false, cardNoP,
dbID);
}
Scott,
If I would be a virus writer, I would definitely open at least one
db (virus master copy:) with exclusive mode right after reset,
thus making it unreadable, (DmOpenDatabase will fail).
In order to do that, however, your virus has to execute first. A good virus
protection would not allow a
So there is no need to scan the databases then.
No need is a bit too strong. It's true that, generally, there is no need to
run an on-demand scanner regularly - but many people like to do that; perhaps
in order to get a confirmed feeling that their machine is clean (even if that
feeling is,
How about when the virus installs itself into flash?
Well, it shouldn't matter. Since on a no-notify reset no application receives
the sysAppLaunchCmdSystemReset launch code, the virus shouldn't be able to
activate, no matter where it is. (Of course the various system extensions won't
BTW, where is the bootstrap loader of PalmOS? Can it be accessed and can it be
modified on those devices that have Flash ROM?
Regards,
Vesselin
--
For information on using the Palm Developer Forums, or to unsubscribe, please
see http://www.palmos.com/dev/support/forums/
he he he, thinking of writing a virus then?
No, am an anti-virus person; we don't do such things. Just trying to anticipate
what a virus writer could do and what I need to check and protect in an
anti-virus program.
Do you happen to know the answer of the question I asked?
Regards,
Vesselin
Hello folks,
Part of the PalmOS Programmer's Companion Vol. 2 says
http://www.palmos.com/dev/support/docs/palmos/PalmOSCompanion2/ExchangeManagerConcept.html#996157
See Listing 1.2 to see how the iMessenger example application
performs this task for the mailto URL scheme. The full source code
Hello folks,
I've read in many places that when an application is launched with a launch
code different from sysAppLaunchCmdNormalLaunch, sysAppLaunchCmdGoTo or
sysAppLaunchCmdURLParams, it is not allowed to use global variables. The same
goes when the application is responding to a
Asking this on a public form is presumably the way of seeding the
development community with the knowledge to write a nasty virus,
and hence create a need for anti-virus programs ?
Let's see:
1) Are you implying that the development community consists of (or at least
contains) virus
I'm not sure how valuable source code for that particular
application would be to anyone today.
Ah, I'm still trying to figure out how exactly to receive beamed databases of
particular kinds with my application; that's why I'm trying to follow up all
the relevant pointers.
I'll update the
Thanks for the idea!
1) MemPtrNew() or MemHandleNew() a structure that contains all the
info your code needs. Be sure to MemPtrSetOwner() to 0, so the
memory is not automatically freed when your app exits, unless
that's okay.
If I do this, when should I free the allocated memory chunk? When
See the documentation for the description of the API calls SysUIAppSwitch and
SysAppLaunch.
Regards,
Vesselin
--
For information on using the Palm Developer Forums, or to unsubscribe, please
see http://www.palmos.com/dev/support/forums/
Well, if there ARE any virus writers for Palm, then it would be
pretty naive to assume that they are NOT lurking in this forum.
Oh, they have their own dedicated Web sites, IRC channels, mailing lists and
what not - which are dedicated to the subject of virus writing. They don't need
to sift
It could be that the reason for the error is outside the code snippet you
posted... When you call DmOpenDatabase, is the returned dbHandle valid or NULL?
What happens if you try to look for a different resource - do you still get an
invalid index?
Regards,
Vesselin
--
For information on using
Hello folks,
According to the description in the PalmOS Programmer's API Reference of the
API call DmFindResource
http://www.palmos.com/dev/support/docs/palmos/PalmOSReference/DataAndResourceManager.html#1009528
this function
Returns index of resource in resource database, or
I can see how it might loop forever if it somehow failed to
increment iSize in the while loop.
In order to test this conjecture, try rewriting that horribly terse loop in a
more readable way and see what is happening at each step with the debugger. For
instance, something like this:
for (i =
Not sure how much help this is, but see this
http://www.palmos.com/dev/support/docs/palmos/PalmOSCompanion2/TelephonyMgr.html#1038592
for some sample code how to receive a notification when an SMS message arrives.
Regards,
Vesselin
--
For information on using the Palm Developer Forums, or to
Did you read the documentation of the functions I pointed you to? Which part of
it you did not understand? Ask, if you have any particular questions - but
write my program for me is unlikely to get any helpful replies...
People would be willing to help if you demonstrate that you have done your
I personally like the Memo Pad source for this...
Yeah, I did look at it too. But it sends records or categories - not whole
databases. I doesn't use this ExgGetDefaultApplication thingy, either.
Besides, one of the things I want to do is register to receive PRC files - so
that I can scan
Yes, Ben, I am quite familiar with Filez. High praise for its author for having
released its source - one can really learn a lot of things from it.
Unfortunately, Filez does not *receive* databases. It only *sends* them - and
lets the launcher on the receiving device handle the receiving.
It's
Hello folks,
I am still trying to figure out how exactly to receive whole databases beamed
to my application... I think I've almost got it, but there is something still
eluding me... Here is the problem.
1) On sysAppLaunchCmdSystemReset and sysAppLaunchCmdSyncNotify my application
registers
In fact, the appData field of the structure pointed by the exgSocket pointer is
zero already in the function ReceiveDatabase - immediately after doing
err = ExgAccept (exgSocket);
I truly don't understand what might be the problem. :-( Why isn't the value of
that field preserved?!
BTW, in
Given that the title bar has a title that consists of characters, how about
using FntCharHeight?
Regards,
Vesselin
--
For information on using the Palm Developer Forums, or to unsubscribe, please
see http://www.palmos.com/dev/support/forums/
I haven't actually tried this but, according to the documentation, something
like this should work:
Boolean cardPresent;
UInt16 slotRefNum;
UInt32 slotIterator;
cardPresent = false;
slotIterator = expIteratorStart;
while (slotIterator != expIteratorStop)
{
if (ExpSlotEnumerate (slotRefNum,
PalmOS Programmer's Companion, Vol. 1, Chapter 7:
http://www.palmos.com/dev/support/docs/palmos/PalmOSCompanion/ExpAndVFSConcepts.html#1032018
Listing 7.2 contains two program errors:
1) The variable err is not declared.
2) The else part of the if statement is missing a closing brace.
Scott, it's not a good idea to put your scan strings on a Web page for the
whole world to see. This means that your competitors can steal them from you
for their own products - and that the virus writers will know what to modify in
their viruses in order to make them elude your scanner.
A
You can't rely on the OS version number to tell you whether the memory card is
supported or not. True, you need at least version 4.0 of the SDK to compile a
program that uses the VFS manager - but there have been devices running an
older version of the OS (e.g., 3.0.1H) that nevertheless
According to the PalmOS Programmer's API Reference, the function ExgDBRead
takes as a second argument a pointer to a function which is supposed to resolve
name conflicts (i.e., when the database being sent to the device has the same
name as an already existing local database):
Scott, another idea. I know that it's not what you want, but consider it
nevertheless.
All the virus scanners for PalmOS that I am familiar with don't update their
definitions directly (i.e., not by connecting to a virus definitions database
distribution site with the PDA). Instead, they have
Hello folks,
What will happen if an application does not issue any ExgRegisterData or
ExgRegisterDatatype calls to register to receive a particular database type -
but another application uses ExgPut/ExgSend to send data to the device on which
the first application resides *and* puts the
I think that you need to use the VFS Manager to access the contents of the
memory card. The Dm* stuff works only with the databases in the local memory.
The card doesn't contain databases - it contains files. You'll need to use one
of the VFS conversion functions - VFSImportDatabaseFromFile,
I am sort of a newbie. How do I get the font of the title bar?
You don't - it's the boldface version of the standard system font. I'm not
aware of a standard way of changing it. That's why I suggested using
FntCharHeight; the boldface font has the same height (although different
average
SHA1 and MD5 are one-way encryption, which means you can encrypt
but not decrypt. So, they won't let you do what you have said
you are trying to do.
Well, strictly speaking, any cryptographically strong hash function can be used
to construct a cryptographically strong cipher. The reverse is
BTW, another advantage of having a conduit for updating the virus definitions
database is that this way you can update even devices that don't have direct
Internet connection - although I can see how that might not be that much
important for the kind of services your company provides.
Regards,
You might want to look into the PalmSource Installer:
http://www.palmos.com/dev/tools/installer/
I've never used it myself, but from the documentation it looks as if allows a
'net-capable device to connect to a specially prepared Web page on your server,
download the latest version of the
Depends on your definition of any. :-)
The net-enabled Palm devices come with a system library Net.lib. It implements
Berkeley sockets-level 'net access. You can, of course, implement a HTTP
request based on those - it's just a bit of low-level work. Quite a bit, at
that.
There is something
Hello folks,
I am at the point where I have to implement examining the contents of every
file on a memory card.
First, a quick question - is there a fast way of determining how many files are
present on the card? For the main memory, we have DmNumDatabases. I can get the
number of files by
I am trying the HTTP lib you gave a link to.
Please note that I haven't used it myself (I don't even have a net-enabled
device), so I might not be of much help.
I got the src code, put the .h and .c files in my src
folder, did #include http.h. then I tried to call the
is there a fast way of determining how many files are present on the
card?
No
Drat. :-( Thought so. That also means no reliable progress indicator during the
traversal - because I won't know in advance who much work there is to do, so I
won't know what part of it I've already done. There
Register for sysNotifyDBCreatedEvent notification.
Ah! That would solve the problem, indeed, thanks! I'll just have to find a way
to pass the information that a database has been created from the notification
handler to the code that's looping through the databases - so that it knows it
must
Implement GetNextFile() like this:
Keep the directory list along with the enumeration.
At the beginning the dirList is initialized to the root dir.
1. Pop a directory from the dirList or terminate (empty dirList).
2. Start directory enumeration.
3. If the enumeration yields a file, return
From the commercial point of view (if you are going to sell
the app), the OS4 users represent only a negligible fraction of the
potential users.
I'll give out the application for free - but I want to support as large a user
base as possible. I also somehow doubt that the population of OS4
Hello folks,
I've asked this question before and didn't get any answers. Now I have some
specific code that doesn't work, so I thought I'd ask again.
Basically, I want my application to receive the applications beamed to the
device on which it is installed, so that it can inspect them first.
The Zire 31 uses Palm OS 5.2. The only Zire that shipped with Palm
OS 4 was the orignal Zire (m150).
Then they have m150. It's a holiday here, so I can't ask them right now - but
it's the cheapest model; I think it has only 2 Mb RAM and the screen is BW
LCD. It's definitely a Zire and the OS
Is the extension specified in
ExgRegisterData (appCreatorID, exgRegExtensionID, PRC);
case sensitive?
How would I know? The documentation doesn't say... Besides, I tested it under
OS 5.x with the simulator; at least there the MIME type registration ought to
have been sufficient, if I have
At this point I'm starting to wonder whether the interception of
beaming of applications is possible at all...
Yep, that's apparently the case. :-((
More precisely, it seems that under PalmOS 5.x, it is *impossible* for a user
application to receive PDB or PRC files sent by the *launcher* of
It's a commercial product. The library file is not present in the demo
distribution - the purpose of the latter is just to show you how a program that
uses the library looks like. You'll have to buy the product, in order to get
the library.
Regards,
Vesselin
--
For information on using the
1 - 100 of 366 matches
Mail list logo