|
Is there anyway of having a dataset that is linked to my access database in such a way that when the database changes the dataset automatically updates itself?
|
|
|
|
|
The idea of ADO.net is to work on databases without an active connection so i wouldn't have thought so. You could get the program to create the connection every X Minutes / Hours and update the dataset accordingly.
Kev
|
|
|
|
|
Hi guys,
yeah here i am having one standard (0,0) co-ordinate at top ,left of the page and in that page my image is rotated any where.
so i want to find out rotation angle and translation factor.I got the rotation
angle means at what rotation my image must be at (0,0) co-ordinate but i want to find out translation matrix of GDI+ of DX,DY.
now here is situation where i got stuck.
suppose i am having (3,5) point which is left,top point of my image and i want the matrix of that and after getting that matrix i want to translate it by using
matrix.Translate(,) method so after getting translate i got my image at (0,0) point and how the matrix of that represent the element?
can anybody tell me out.
thanks.
regards,
montu3377
|
|
|
|
|
IIRC, if you have a point (3, 5) that you want to appear at (0, 0), you'd simply call TranslateTransform(-3, -5, MatrixOrder.Prepend).
But I'm not sure, I don't have anything to test it right now.
Yes, even I am blogging now!
|
|
|
|
|
Hi,
yeah you are right but this is this method is same as Matrix.Transform(-3,-5,matrix.append)?
and how can i got the element of that matrix?
i just need the confirmation about that.
thanks.,
regards.,
montu3377
|
|
|
|
|
Trying to create a dynamic button as follows:
initilized
this.button2 = new System.Windows.Forms.Button();
this.button2.Location = new System.Drawing.Point(80, 128);
this.button2.Name = "button1";
this.button2.Size = new System.Drawing.Size(120, 23);
this.button2.TabIndex = 8;
this.button2.Text = "Create Appointment";
this.button2.Click += new System.EventHandler(this.button1_Click);
It compiles with no errors but is not displayed
any hellp is greatly appreciated
|
|
|
|
|
|
I wish to prevent AutoPlay from happening when my .NET application is running. According to MSDN (http://msdn.microsoft.com/msdnmag/issues/01/11/autoplay/default.aspx[^], there are two methods for accomplishing this:
1) Handle the "QueryCancelAutoplay" windows message. This only works when your application is in the foreground and activated.
2) Implement the IQueryCancelAutoPlay COM interface and register with the ROT (Running Object Table)
I found an article for the first method at http://www.experts-exchange.com/Programming/Programming_Languages/Dot_Net/Q_20695207.html[^]. However, my application isn't always in the foreground. Therefore, I am left with option 2. The big question I have is, how do I implement the IQueryCancelAutoPlay COM interface and register it at runtime with the ROT using C#?
~mykey
What do you get when the devil goes bald? Hell Toupee.
|
|
|
|
|
myker wrote:
The big question I have is, how do I implement the IQueryCancelAutoPlay COM interface
That's the easy part:
Compile the shobjidl.idl from the Platform SDK (where IQueryCancelAutoPlay is defined) to a .tlb file with the IDL compiler. Then, add a reference from your project to this .tlb file.
myker wrote:
register it at runtime with the ROT using C#?
That's the hard part, but I found a sample for you here:
http://www.dotnet247.com/247reference/msgs/49/245964.aspx[^]
Yes, even I am blogging now!
|
|
|
|
|
Wow, take a dependency on an interop assembly just ot implement the interface? It's a simple interface to implement and I'll post the solution in my direct reply if you're interested. It's a good approach for larger interfaces or many interfaces, however.
This posting is provided "AS IS" with no warranties, and confers no rights.
Software Design Engineer
Developer Division Sustained Engineering
Microsoft
[My Articles] [My Blog]
|
|
|
|
|
Heath Stewart wrote:
Wow, take a dependency on an interop assembly just ot implement the interface? It's a simple interface to implement and I'll post the solution in my direct reply if you're interested. It's a good approach for larger interfaces or many interfaces, however.
Ok, ok, I didn't use the [ComImport()] and [Guid()], but I was lazy and didn't want to convert the IDL to C#
Also, the point was to show him how to implement the interface, and tlbimp.exe is easily accesible from the IDE, I avoid explaining more than one thing per answer, because this can lead to confusion.
Yes, even I am blogging now!
|
|
|
|
|
The first reply will lead to an extra, rather large assembly that not necessary for this one simple interface with a single method. Just declare it in your project like so:
[ComImport]
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
[Guid("DDEFE873-6997-4e68-BE26-39B633ADBE12")]
public interface IQueryCancelAutoPlay
{
[PreserveSig]
int AllowAutoPlay(
[MarshalAs(UnmanagedType.LPWStr)] string pszPath,
[MarshalAs(UnmanagedType.U4)] int dwContentType,
[MarshalAs(UnmanagedType.LPWStr)] string pszLabel,
[MarshalAs(UnmanagedType.U4)] int dwSerialNumber);
} Implement that in a class with its own GuidAttribute (always hard-code your GUIDs, be they CLSIDs or IIDs) and [ClassInterface(ClassInterfaceType.None)] so that the CLR does not auto-generate a class interface for you. You should always follow good COM practices when coding COM interop in .NET.
You'll then need to register an instance of your implementation class in the Running Object Table. To do this you'll need to P/Invoke GetRunningObjectTable and CreateClassMoniker and use the UCOMIRunningObjectTable and UCOMIMoniker interfaces defined under System.Runtime.InteropServices :
[DllImport("ole32.dll")]
static extern int GetRunningObjectTable(
[MarshalAs(UnmanagedType.U4)] int reserved,
ref UCOMIRunningObjectTable);
[DllImport("ole32.dll")]
static extern int CreateClassMoniker(
Guid g,
ref UCOMIMoniker); (Note that neither of these functions gets defined when you create an interop assembly like how the first reply states).
To register your implementation class, then, instantiate it. In the following code, I assume the reference variable is called qcap :
int cookie = 0;
UCOMIRunningObjectTable rot;
if (GetRunningObjectTable(0, ref rot) == 0)
{
IMoniker mk;
if (CreateClassMoniker(new Guid("your class's GuidAttribute value"),
ref mk) == 0)
{
rot.Register(0, qcap, mk, ref cookie);
}
} Because this is a weak reference, you should not need to explicitly revoke your registration, but it's not a bad idea to do anyway. What I recommend is implementing the IDisposable pattern on your class and call UCOMIRunningObjectTable.Revoke passing the cookie I referenced above.
[EDIT]
I forgot that you must also register the CLSID (the same as for the implementation class) under HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\CancelAutoPlay\CLSID\{YOUR CLSID}. To do that and still support registration via regasm.exe, define a couple of static functions that use the Registry and RegistryKey classes and attribute those functions with the ComRegisterFunctionAttribute and ComUnregisterFunctionAttribute . regasm.exe will execute these appropriate in addition to normal registration.
This posting is provided "AS IS" with no warranties, and confers no rights.
Software Design Engineer
Developer Division Sustained Engineering
Microsoft
[My Articles] [My Blog]
|
|
|
|
|
Friends I need your help because I want to print any document in a printer 3700dn whit mirror out,I need this in c#.Help me please because I´ve found this problem in many pages and the result have been null,I wait that anyone bring me any help
Thanks
S.
bigmega
|
|
|
|
|
In C++ you could use negative co-ordinates to flip an image when you BitBlt. You could import this from the dlls if C#/GDI+ does not do the same.
Christian
I have several lifelong friends that are New Yorkers but I have always gravitated toward the weirdo's. - Richard Stringer
|
|
|
|
|
Hi, I am having problem using Win32 SendMessage function to send a string from one process to another in a C# Windows Form app. I am using .Net 1.1 SP1 on a Windows XP Pro box.
What I am trying to do is to restrict user from running multiple instances of a windows form app. When they do "MyWindowsFormApp.exe userArgument", I want to pass "userArgument" to current running instance of the app.
Here is the code
/***dll import part***/
[DllImport("User32.dll", EntryPoint="SendMessage")]
public static extern int SendMessage( int hwnd, int uMsg, int wParam, [MarshalAs(System.Runtime.InteropServices.UnmanagedType.LPStr)] string lParam);
/***code that sends message***/
//this returns currently running process of my application.
Process process = GetCurrentInstance();
//get first argument
string s = GetArgument();
//send argument Win32.WM_USER = 0x0400;
SendMessage(process.MainWindowHandle.ToInt32(),Win32.WM_USER, 0, s);
/***code in main form of MyWindowsFormApp that receives message***/
protected override void WndProc(ref Message m)
{
switch(m.Msg)
{
case Win32.WM_USER:
IntPtr intPtr = m.LParam;
string str = Marshal.PtrToStringAuto(intPtr);
string str2 = (string)m.GetLParam( typeof(string) );
break;
}
}
Sending message part seems working(not exception thrown) and the WndProc method in the windows form IS receiving the message.
Problems are:
intPtr.ToInt32() always returns 1242424. Marshal.PtrToStringAuto(intPtr) always returns a empty string.
and (string)m.GetLParam( typeof(string) ) throws a MissingMethodExcpetion ("No parameterless constructor defined for this object.")
What am I doing wrong? Any suggestion will be greatly appreciated!
LS
|
|
|
|
|
Liu Shuai wrote:
What am I doing wrong? Any suggestion will be greatly appreciated!
Sorry, I don't know, but a few things you could try:
1. Try to first change the code to SendMessage in-process to check if the problem is between processes.
2. Try to SendMessage a WM_SETTEXT to some control (e.g., a textbox) to check if the problem is happening when sending the string or receiving it.
Yes, even I am blogging now!
|
|
|
|
|
Thanks for the response Daniel. I did those two testes.
1. SendMessage in-process is giving me the same (invalid) result
2. WM_SETTEXT works...
but isn't WM_SETTEXT sending string too?
|
|
|
|
|
Liu Shuai wrote:
1. SendMessage in-process is giving me the same (invalid) result
2. WM_SETTEXT works...
I asked you to do those tests to isolate if the problem was on the code that was sending the message or receiving the message. Now, we can see that the problem clearly seems to be in the part receiving the message.
Re-reading your post I notice that you're using a WM_USER message to send the string. This is not a good practice, and even the .NET framework can be using the same message, and that's why you are getting a bogus result. Another thing to try is calling RegisterWindowMessage with the same string - I use a GUID to assure that it's unique - on both ends (sender and receiver) and see if this time it works.
Yes, even I am blogging now!
|
|
|
|
|
Yes, I realized too using WM_USER isn't appropriate...tried RegisterWindowMessage and got some result. But at least I think it's consistent as I WAS able to receive message and corrent integer type lparam by using WM_USER.
Any thought?
|
|
|
|
|
When sending messages between processes, Windows has to marshal the message's parameters - if the parameter is a pointer, it needs to copy the target of that pointer into the receiver's address space and set the pointer value appropriately. It therefore has to know what the parameters mean - is this (WPARAM or LPARAM) a pointer to a structure, a string, or just a number? If it's a structure, what's the structure's layout - does it have any embedded pointers that also need to be marshalled?
Windows has built-in logic for doing this for the standard Windows messages it knows about, but if you use your own message numbers, it simply passes the values of WPARAM and LPARAM without translating them.
Windows features a little-known message WM_COPYDATA (0x004A). This message can be used to copy an arbitrary data buffer between processes.
Since both ends are written in C#, I'd recommend using .NET Remoting to communicate between the processes.
Stability. What an interesting concept. -- Chris Maunder
|
|
|
|
|
Thanks Mike.
Doesn't "[MarshalAs(System.Runtime.InteropServices.UnmanagedType.LPStr)] string lParam"
tell .Net how to marshall strings?
Also I tried to call SendMessage() in-process and I am getting the same exception.
Does that make sense? Thank you.
|
|
|
|
|
I'm working on a Graph grid that is it's own region on the form. I want the OnMouseMove event to display the x and y coords. in text boxes, if the mouse goes inside this grid area.
I was getting pretty far by myself until I ran into a problem... I'll just print the code so you'll know what I mean.
if(region.GetBounds().Right >= MousePosition.X && region.GetBounds().Left <= MousePosition.X))
{
txtXcoord.Text = MousePosition.X.ToString();
}
it keeps giving me an exception if I stick a graphics object in the GetBounds(). Please help me, I dunno what to do.
If someone's got a simpler way of doing this, that would be awesome too.
|
|
|
|
|
What is region defined as? A Region struct? In what class is this code contained (the one that declares region )? What's the access on the region field?
What is the exception that is thrown (type)? What does the exception text read?
Please be specific and verbose when asking for help. We don't know your code (and what you posted isn't nearly enough to help diagnose the problem) nor the circumstances under which your code is called.
This posting is provided "AS IS" with no warranties, and confers no rights.
Software Design Engineer
Developer Division Sustained Engineering
Microsoft
[My Articles] [My Blog]
|
|
|
|
|
Sorry. I am new at this.
Region is defined in the main form, at the top (private Region region;)
with graphics as a class variable. (private Graphics g;)
Graph is a .cs file that holds the region data, and the Override Paint event instances the method and tells it to paint itself.
Here's more code:
protected override void OnPaint(PaintEventArgs e)
{
Graphics g = e.Graphics;
Graph gr = new Graph();
}
gr.DrawGraph(toolBarMain.Location.X+5,toolBarMain.Size.Height+5,500,500,g);
}
protected override void OnMouseMove(MouseEventArgs e)
{
Graph gr = new Graph();
region = gr.GetRegion();
if(region.GetBounds(g). >= MousePosition.X && region.GetBounds(g).Left <= MousePosition.X)
{
txtXcoord.Text = MousePosition.X.ToString();
}
base.OnMouseMove (e);
}
I didn't call it in OnPaintArgs, but does that matter?
It paints my grid fine, but I want to display the x/y coordinates of my mouse in two text boxes.
I didn't put the 2nd text box in yet because I wanted to make sure that it was working properly.
is this enough info?
|
|
|
|
|
Hey There,
Why are you instatiating the Graph() object both in OnPaint and again in onmousemove. Shouldn't you be using the same object?
|
|
|
|
|