|
DLL and EXE files in ROM can be of two sorts: execute-in-place, and regular files. DLLs and EXEs marked execute-in-place cannot be opened for reading, only loaded by Windows using CreateProcess or LoadLibrary . Files with other extensions may also be affected if they're really DLLs underneath (and are also marked execute-in-place).
Technical reason: a DLL or EXE's image on disk is different from its image in-memory. An execute-in-place DLL or EXE is exactly what it says: it executes directly, in-place, from the ROM. A 'regular' DLL file has to be copied to RAM and fixed-up by the loader; for the execute-in-place DLL, it has to be fixed-up at ROM build time. In the process, the information required to fix it up is discarded along with the regular image headers. It isn't then possible to reproduce the file. It could have been, but Microsoft decided not to waste ROM space on keeping the information required to reverse the process.
Execute-in-place was very relevant in the first Windows CE devices which had very small amounts of RAM. I think it's being slightly de-emphasized now.
Either type of DLL, and indeed any file in the ROM, can be overridden by copying a file to the device's storage in the 'same' location to shadow it. However, you can never delete the file.
|
|
|
|
|
Mike,
thanks for your explanation!
It seems that there is indeed no way to produce an exact copy of such a file.
CreateFile() fails, file-mapping also. The only feasible way to get access to a DLL's image seems to be LoadLibraryEx() with the LOAD_LIBRARY_AS_DATAFILE-Flag.
It thought that it may be possible, if the exact image-size is known, to write the RAM-Image to another file. But at the modules base-address (located via the toolhelp-API) there are no such familiar things as the PE-Headers! I have spended much time and effort to get things working, but I think now it's time to give up...
Thanks again for your help!
Best regards and greetings from germany
Reiner
|
|
|
|
|
hi i want to know how to create an application to convert Cell phone Airtime to Electricity Pay Bills
Vuyiswa
|
|
|
|
|
In my application when I try to send data from Pocket PC to Desktop (via RDA method) my application crashes and I get this error: "SQL Server Compact Edition encountered problems opening Database".
Does anyone faced with this problem if yes plz let me know how can I solve.
Regards.
I Love SQL
|
|
|
|
|
PocketJEDI
Features:
- Editing of *.java files
- java syntax highligting
- simple project manager
- building project with external compiller (kopi)
- runnig compiled program with Jeode EVM
It works on:
- PocketPC device (ARM processor only)
- Windows Mobile 2003/5.0
- .Net Compact FrameWork 2.0 (Archive of Packages can be downloaded from here)
To run and compille applications you'll need also:
- Jeode JVM
- KOPI java compiller
Page of project: PocketJEDI
|
|
|
|
|
when i make Synchronize for SqlCeReplication make error message is (header informationis either corrupted or missing ) and error no.28035 (SqlCeError)
some body help me
123
|
|
|
|
|
I have a PDA application, where my application need to click a button to run a video file. How can play video by a button click on my form? I am using mobile client software factory.
Anyone can help?
|
|
|
|
|
Hi,
Have a look at Alex's article on MSDN titled "Hosting ActiveX Controls in the .NET Compact Framework 2.0" - http://msdn2.microsoft.com/en-us/library/aa446515.aspx[^]
This will show you how to host the Windows Media Player ActiveX control within your applicatoni. It's fairly heavy going.
If all you need to do is play a file in the existing windows media player application you may like to investigate using the System.Diagnostics.Process
class. You could use this to start "myVideo.wmv" and the device would determine the correct application to run to play the file.
Hope it helps,
Christopher Fairbairn
|
|
|
|
|
I was trying to create a login page that targets handheld devices. I created the browser file to properly detect BlackBerrys, and it worked. I created the login page using the LoginControl and membership framework, and it worked. I ran into trouble with the "Remember Me" checkbox. It boils down to this I think: The BlackBerry 8800 does not properly treat the checkbox! I have been unable to find anything. My form works on IE, BlackBerry 8700 and even a Treo. Here is a sample form with a checkbox:
<code>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
protected void Page_Load(object sender, EventArgs e)
{
bool c = myCheckBox.Checked;
lblMessage.Text = "Checked: " + c.ToString() + "<br/>";
bool isMobile = Request.Browser.IsMobileDevice;
lblMessage.Text += "Mobile: " + isMobile.ToString();
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>It don't work!</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<input runat="server" id="myCheckBox" name="cbtest" type="checkbox" />
<asp:Label ID="lblMessage" runat="server"></asp:Label>
<input id="Submit1" type="submit" value="submit" />
<br />
</div>
</form>
</body>
</html>
</code>
Juan Ayala
|
|
|
|
|
Hi all,
does anyone know how to handle the PIN entering dialog? e.g. if i want to replace the PIN entering dialog with my own dialog? how can i do that?
thanks
|
|
|
|
|
|
When I run application on PPC,forms draws itself in memory how many times I open it, if I open twice one form it draw itself in memory as two instances.
How can I let the application to draw form only single time?
I Love SQL
|
|
|
|
|
What development environment are you creating your application in? Typically the template/wizard code for your environment (with Visual Studio atleast) will have inserted code which restricts your application to one instance.
You may like to read the following thread on the MSDN Forums website (where the opposite problem is discussed, i.e. how to allow multiple instances) - http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=1576750&SiteID=1[^]
Basically in the WinMain method of your application you should put some code similiar to the following:
hWnd = FindWindow(szWindowClass, szTitle); <br />
if (hWnd) <br />
{<br />
SetForegroundWindow((HWND)((ULONG) hWnd | 0x00000001));<br />
return 0;<br />
}
The call to find window is used to detect the existing copy of your application based upon it's window class and window title. Just alter the two arguments to match that of your application's main window.
Hope it helps,
Christopher Fairbairn
|
|
|
|
|
Try using showDialog() to open up the form. This shows the form as a modal dialog box with the currently active window set as its owner. The form being opened will show only once then, I think..
|
|
|
|
|
I am now developing a mobile application using Mobile Client Software Factory. Currently what i need to do is, I have a screen where it have a choice of events, I will the button where it will add the event from the system to the calendar that build in with mobile application and this will be the reminder.
Can i know whether this can be done?
Thanks.
|
|
|
|
|
Have a look at the following article on developer.com - http://www.developer.com/ws/pc/article.php/10947_3556186_1[^]. It contains step by step instructions on how to add the required references etc in order to use the Microsoft.WindowsMobile.PocketOutlook assembly.
You can also find a very good example here which does exactly what you want - http://rareedge.com/gmobilesync/2006/12/08/add-appointments-to-pocketoutlook/[^]. I have reposted the code example here for you:
using System; <br />
using Microsoft.WindowsMobile.PocketOutlook; <br />
public class PocketOulookSample <br />
{ <br />
public void AddAppointment() <br />
{ <br />
Appointment appointment = new Appointment(); <br />
using (OutlookSession outlook = new OutlookSession()) <br />
{<br />
appointment.Subject = "Bake a cake"; <br />
appointment.Start = DateTime.Now.AddDays(1); <br />
appointment.AllDayEvent = true; <br />
appointment.Body = "Nicole loves cake!"; <br />
appointment.Location = "Kitchen"; <br />
appointment.Sensitivity = Sensitivity.Personal; <br />
<br />
outlook.Appointments.Items.Add(appointment); <br />
}<br />
} <br />
}
Hope it helps,
Christopher Fairbairn
|
|
|
|
|
Thanks. It really helps. I think i type in the wrong keyword, no wonder I cant find the solution. Thanks so much.
|
|
|
|
|
Hello!
I know NOTHING about Pocket PCs or the Pocket PC Emulator. I am acutally creating an ASP.NET application and I want to make sure it's usable from a Pocket PC.
So, I want to use the Pocket PC 2003 Emulator to connect to the internet and view my webpage. I've read several articles on how to set this up, but none of them get me all the way there. I have followed all the directions, but when I try to access a website I get the following message:
Unable to connect: you have no modem entries created, and no network card present
I am pretty ignorant in this area. Can anyone tell me what I need to do here? I am cradling the emulator via the Device Emulator Manager.
Thanks!
Ian
|
|
|
|
|
|
Yes try DMA.
Worked with VS 2005.
|
|
|
|
|
put games on to my mobile phone from a mobile phone disc ???
help plz deano
|
|
|
|
|
My program can connect to SQL Server when PPC connect PC by using Microsoft ActiveSync but I don't know why it can not connect to SQL Server by using card wireless.
I use Microsoft Visual Studio .NET 2003 and PPC is WM 2005, sql server 2000, my coonect string "Data Source=ServerIP,1433;Initial Catalog=Northwind;user id=sa;password=sa"
The problem is always error everytime I open a connection.
"System.Data.sqlClient.SqlException: SqlException at System.Data.sqlClient.SqlConnection.OnError() at System.Data.SqlClient.SqlInternalConnection.OnError()"
Please help me, thanks
kevil
|
|
|
|
|
Hi,
the problem is that the adapter-/IP-Address is'nt the same for an ActivSync-Connection (usually 169.254.2.x) and for a WLAN-Connection (here the IP-Address is usually assigned via DHCP from an Access-Point (e.g. WLAN-Router). I'm workin on the same problem these days, but have not found a sufficient solution 'til yet.
A possible solution may be, to enumerate all adapters at runtime and insert the appropriate IP to the connection-string.
I let you know, if I had found a working solution.
Best regards
Reiner
|
|
|
|
|
Hi,
I have code that highlights rows in a DataGrid based on the value of the Status column. The code works quite well on the Desktop. When the same code is executed on Windows Mobile 6 environment (I am using emulator to test) it does not work. See code below.
I am installing custom control DataGridColorTextBoxColumn for table styles derived from DataGridTextBoxColumn that overrides the Paint method of DataGridTextBoxColumn. This method does not exist in Mobile SDK.
Any thoughts on how this can be done easily without writing a custom DataGrid that overrides Paint? In this case, one has to deal with the rendering of the entire control.
Any help would be greatly appreciated...
Thanks and Regards,
- Raj
|
|
|
|
|
Here's the code...
--------------- Installing custom control for column ---------------
private void AddStyles(DataGrid dg)
{
DataGridTableStyle ts = new DataGridTableStyle();
DataTable dt = (DataTable)dg.DataSource;
ts.MappingName = dt.TableName;
for (int j = 0; j < dt.Columns.Count; ++j)
{
DataGridColorTextBoxColumn cs = new DataGridColorTextBoxColumn(j);
cs.MappingName = dt.Columns[j].ColumnName;
cs.HeaderText = dt.Columns[j].ColumnName;
ts.GridColumnStyles.Add(cs);
}
dg.TableStyles.Clear();
dg.TableStyles.Add(ts);
}
--------------- Custom control code ----------------------------
public class DataGridColorTextBoxColumn : DataGridTextBoxColumn
{
//in your handler, set the EnableValue to true or false, depending upon the row & col
private int _col;
public DataGridColorTextBoxColumn(int col)
{
_col = col;
}
protected override void Paint(System.Drawing.Graphics g, System.Drawing.Rectangle bounds, System.Windows.Forms.CurrencyManager source, int rowNum, System.Drawing.Brush backBrush, System.Drawing.Brush foreBrush, bool alignToRight)
{
{
DataTable dt = (DataTable)this.DataGridTableStyle.DataGrid.DataSource;
DataRow row = dt.Rows[rowNum];
Brush bgBrush = backBrush;
if (((string)row["Status"]) == "Open")
{
bgBrush = Brushes.Red;
}
base.Paint(g, bounds, source, rowNum, bgBrush, foreBrush, alignToRight);
}
}
|
|
|
|