|
i have a small problem. I want to add a fucntionality to my application in which users can drag and .exe file from any window into my form and i can find out the path and icon of the application and add it to my app.
|
|
|
|
|
For getting the icon of files dropped on your app, see the CodeProject article here[^].
For getting the path of files dropped on your app, see this article[^].
Next time you might want to try searching CodeProject or google before posting. That way you'll get an immediate answer and we won't have to post duplicate answers in the forum.
Tech, life, family, faith: Give me a visit.
I'm currently blogging about: Horrific Minnesota Radio
Judah Himango
|
|
|
|
|
I need help finding out if the user of my program is using Service Pack 2 or not. I tried a spot in registry, but found out that if you uninstall SP2 this registry key stays and the program still says you have SP2. Any help would be great.
|
|
|
|
|
Have you looked as the Environment class and its OSVersion property?
Environment.OSVersion Property[^]
RageInTheMachine9532
"...a pungent, ghastly, stinky piece of cheese!" -- The Roaming Gnome
|
|
|
|
|
As Dave previously mentioned, Environment.OSVersion will contain the name of the service pack, if any. Additionally, in .NET 2.0, the service pack can be accessed directly using Environment.OSVersion.ServicePack.
Tech, life, family, faith: Give me a visit.
I'm currently blogging about: Horrific Minnesota Radio
Judah Himango
|
|
|
|
|
|
I understood you could mix languages. I created 1 solution with 2 projects with the following code:
C# routine:
using System;<br />
<br />
namespace CSServer {<br />
class CSServer {<br />
<br />
#region Application Start<br />
<br />
static public void Enter_CSServer() <br />
{<br />
int tmp;<br />
Console.WriteLine("Hello World (C#)");<br />
Do_Call_Back("Hello from the CS side", &tmp);<br />
Console.WriteLine("Value={0}",tmp);<br />
} <br />
#endregion<br />
<br />
} <br />
}
CPP Routine: (startup project)
<br />
#include "stdafx.h"<br />
<br />
#using <mscorlib.dll><br />
<br />
using namespace System;<br />
<br />
<br />
int _tmain()<br />
{<br />
Console::WriteLine(S"Hello World(CPP)");<br />
<br />
Enter_CSServer();<br />
<br />
Console::WriteLine(S"Goodbye Cruel World (CPP)");<br />
return 0;<br />
}<br />
int Do_Call_Back(char *str, int *value)<br />
{<br />
Console::WriteLine(str);<br />
*value = 1;<br />
return(1);<br />
} I get routine-not-found on Enter_CSServer and Do_Call_Back.
The real problem is much bigger but this gets the essance.
Scott Krusemark
330-966-1231
|
|
|
|
|
Interesting. Both projects reference each other, I've never done that as I've always kept a heirarchy between projects so there aren't any circular references.
Anyway, you need to reference one project in the other and add the appropriate using statements at the top of the code.
However, because there seems to be a circular reference it might not permit you to do that.
My: Blog | Photos | Next SQL Presentation
WDevs.com - Open Source Code Hosting, Blogs, FTP, Mail and More
|
|
|
|
|
1) I'm new to C# (lots of VB6 coding) how do I 'reference one project in the other'? I went to the Project for the CPP code and did a 'Add Reference' to the C# project and it still got 'identifier not found'. Could it be associated with the namespace?
2) What I'm trying to do with the 'DO_CALL_BACK' routine would be coded WITH EVENTS in VB6, and pass data back from the 'sub-project'. The C# will be handling the TCP/IP and data/events can originate there and must be passed to the CPP code.
Scott Krusemark
330-966-1231
|
|
|
|
|
How should the C++-Compiler know where to find Enter_CSServer() ?
It's a static member of a class CSServer in a namespace CSServer , so the correct call would be
CSServer::CSServer::Enter_CSServer();
Nevertheless, you'll have to reference the C# project, otherwise the compiler won't find the CSServer namespace/CSServer class.
Regards,
mav
|
|
|
|
|
It seems like such a newbie question. I added the 'reference' to the C# project to the C++ project. And added the CSServer::CSServer::Enter_CSServer() for the call. But I get 'CSServer is not a class or namespace name', as well as the Enter_CSServer is not found.
Is there any way you could put this simple sample with .sln file together so it compiles? Seems like such a simple problem but I don't see it.
Scott Krusemark - scott(at)askent.com
Scott Krusemark
330-966-1231
|
|
|
|
|
Apart from the missing namespace and class name the whole thing won't compile because the callback isn't defined either.
Remove the call to Do_Callback(), then you should be able to compile the C# class library at least.
After this you should add a reference in your C++ project to the C# class library and, by using the fully qualified name including namespace, be able to call the static function.
Regards,
mav
|
|
|
|
|
Already did that. The C# compiles just fine. But then the C++ does not find the namespace.
I tried adding the using namespace CSServer; to the C++ code, it errors out.
I tried adding a #using <testmix.dll> and it finds the .dll but no change on compile.
I tried adding a namespace CSServer; to C++ code and the intelisense finds the _tmain and do_call_back entry points for CSServer::[intelisense here] but not the CSServer class.
I tried making sure everything has the same namespace but looks like C++ does not have a 'default' namespace.
It's probably just some simple setting I'm missing (I suspect on the C# side) but I sure don't see it.
I appreciate your help btw.
Scott Krusemark
330-966-1231
|
|
|
|
|
How to modify the location of a dynamically created control in a asp.net page using c#?
|
|
|
|
|
The ASP.NET forum will help you will ,i think.
|
|
|
|
|
Actually i tried transforming the region of the control to a rotation...
for example,
Region reg = new Region();
Matrix matObj = new Matrix();
matObj.RotateAt(/*some angle*/, /*with respect to some point*/);
reg.Transform(matobj);
myControl.Region = reg;
Iam able to attain the rotation...but supposing the region (reg in this example)is in another shape(than rectangle)...say ellipse, then the shape of the ellipse is not visible completely....reason is that the rectangle coordinates(i.e. the original rectangle size) used to draw the ellipse is smaller than the rotated structure...(after rotation, the location of points are actually out of the bounds of the controls client rectangle...)
So i tried to get the size of the outer rectangle which has completely both the original and the rotated rectangles... by some trignometry...
but nope, im not getting the exact coordinates...
can you help me in this??
Thanks and Regards,
Rajesh
|
|
|
|
|
<Message>
<Questions>
...
</Questions>
<Answers id = 1>
..
</Answers>
<Answers id = 2>
..
</Answers>
</Message>
If , we have to get the node corresponding to the Answers node with id = 1 ,
how can we do that?
Shankar C
|
|
|
|
|
A good idea would be to load the contents of your XML file into a dataSet and do your searching on the dataSet instead. This gives you the advantage of handling XML data as if it was an ordinary Database.
Regards,
Polis
Can you practice what you teach?
|
|
|
|
|
private void ImportXML(string path)
{
XmlTextReader reader = null;
try
{
reader = new XmlTextReader(Server.MapPath("../CheckList/"+strFileName));
}
catch
{
Response.Write("File Does'nt exists");
}
XmlDocument doc = new XmlDocument();
doc.Load(reader);
reader.Close();
XmlDocument docNew = new XmlDocument();
docNew.Load(path);
XmlNode oldCd = null;
bool Append = false;
XmlElement root = doc.DocumentElement;
oldCd = root.SelectSingleNode("//answers[@objectid=" + intValue + "]");
if(oldCd == null)
Append = true;
XmlNode CdNew;
XmlElement rootNew = docNew.DocumentElement;
CdNew = rootNew.SelectSingleNode("/answers[@objectid=" + intValue + "]");
XmlNode newBook = doc.ImportNode(CdNew, true);
XmlNode newNode = doc.DocumentElement.ChildNodes[1];
if(Append)
newNode.AppendChild(newBook);
else
newNode.ReplaceChild(newBook,oldCd);
try
{
doc.Save(Server.MapPath("../CheckList/"+strFileName));
}
catch
{
string strPath = Server.MapPath("../CheckList/") + "TempFile.xml";
ImportXML(strPath);
}
}
can u help me in another way to do this?
|
|
|
|
|
Load data from the XML document into a dataSet:
<code>ds</code>= new DataSet();
ds.ReadXml(fileName);
Create a new row based on the table of the dataSet
DataRow <code>drs</code>= ds.Tables["Table1"].NewRow();
drs["Message"] = "Hello World!"
ds.Tables[table].Rows.Add(drs);
Delete an existing row from the table
if (ds.Tables["Table1"].Rows.Count > 0)
{
ds.Tables[table].Rows.RemoveAt(this.dataGrid1.CurrentCell.RowNumber);
}
Search for a value
if (ds.Tables["Table1"].Rows.Count == 1)
if (ds.Tables["Table1"].Rows[0][ds.Tables["Table1"].Columns[0]].ToString() == "Hello World!")
MessageBox.Show("Found");
Save the changes to the XML file
ds.WriteXml(fileName);
Hope this will help you get the picture.
Regards,
Polis
Can you practice what you teach?
|
|
|
|
|
Thanx polis,
but can u tell about the ImportNodes method in the XML api?
|
|
|
|
|
ImportNodes method? Hmm... I am not aware of this one Shankar, sorry. XML API? What exactly do you mean by this?
Regards,
Polis
Can you practice what you teach?
|
|
|
|
|
In the System.XML namespace , we have a class called XMLDocument.
If we create an object for the above said class, we can call the ImportNodes method.
It's working correctly. but i need to know the correct usage for importnodes method.
|
|
|
|
|
Oh right. I just had a quick read on the MSDN[^]about the ImportNode() method. Well, it seems that all it does is to import specified XML nodes from another XML file into the one you are working with.
E.g.
XML File #1 (Current XML file you work with)
Nodes: FirstName, LastName, Age
XML File #2
Nodes: FirstName, LastName, Age, Address
By saying something like "....ImportNode(doc2.DocumentElement.LastChild, true);", it will append the Address node into your XML file #1.
Regards,
Polis
Can you practice what you teach?
|
|
|
|
|