|
Hellou,
Want to make a simple dictionary, translator which uses Google API to translate from English to Spanish, and inversely. All that is done, but now I want to make dictionary gets data from Clipboard if it's a text, and is no longer of 4,5 words.
I have found this class and operations with that class:
IDataObject iData = Clipboard.GetDataObject();
if(iData.GetDataPresent(DataFormats.Text))
{
textBox1.Text = (String)iData.GetData(DataFormats.Text);
}
I've tried to put this in Timer tick event but have problem cause interval doesn't allow me to manually add other text. I could put higher interval, but that doesn't give on performance and again is possible to change user input when event is raised.
It's very important to know that I want to retrieve data when somewhere from outside of program I copy some text (for exl. Word, Calculator, etc.).
Any help? Thanks
|
|
|
|
|
Not without using some P/Invoke to get information about when the clipboard changes. The Clipboard class doesn't expose any events.
You could try retaining a cache of what was in there last time you looked, and only setting the text if the clipboard contents have changed.
|
|
|
|
|
Sorry, don't undestand. I'm beginner.
|
|
|
|
|
This[^] article contains an implementation of Clipboard monitoring using P/Invoke.
|
|
|
|
|
See my Talking Clipboard[^] article for help on monitoring the clipboard. See my Google Translator[^] article for help on invoking Google's translation service from your app.
/ravi
|
|
|
|
|
I haven't got it.
Code which I posted here is working.
But, I need to make some process in VS which would watch nonstop over the clipboard and paste values if text is up to 256characters for example.
What invoke means exactly?
How to use that exactly?
when you have time answer, it's not important very much, just for learning
kind regards
|
|
|
|
|
By "invoke", I meant "call" or "use".
/ravi
|
|
|
|
|
i want to add image to (data gridview button column )but i don't know how
md_refay
|
|
|
|
|
|
i mean add image as background to button
md_refay
|
|
|
|
|
OK, try changing the keywords in the Google link I gave you and see what it comes up with.
|
|
|
|
|
what is the different between .net frame work 4 &.net frame work 4 client profile
i found these 2 option in the target frame work so what is the different & when to use each one
md_refay
|
|
|
|
|
|
|
How can I change the cursor size of mouse via C#.
I have checked that the Cursor.Size is readonly property.
thanks the world of codeproject.
I am waiting for ur ans.
Thanks!
|
|
|
|
|
I believe you'd have to create your own cursor and set it up through the Win32 API directly. There is no equivilient in the .NET Framework.
You can get started by reading this[^].
|
|
|
|
|
Is it possible to give me a source or examples ?
|
|
|
|
|
The cursor size is a global (OS level) setting, and allowing applications to change it would be asking for usability nightmares.
You can, however, use a custom cursor, and you can create one which is a large pointer. Create a .cur file by the usual means, include it as a resource in your assembly and use this Cursor constructor[^] to load the resource stream.
|
|
|
|
|
Hi, I have a bindingsource binding to several text controls. I want to use the bindingsource.addnew() method to add a new line in the list, then move to the last record. My purpose is to set all these text controls empty to wait for input for the last record. But it failed. The bindingsource.position can not been set to the last record.
Could you please help to solve this problem? thanks.
|
|
|
|
|
to do this I think you should do the following:
DatRow dr = dsCustomerDataset.Customers.NewCustomerRow();
dr[0] = "";
dr[1] = "";
dsCustomerDataset.Customers.AcceptChanges();
then since you fill the binding source with your data set when you use the bindingSource.MoveLast() method it will fill your controls with empty data row which you'll add.
hope this will help you!
Qendro
|
|
|
|
|
|
Hello.
I have one more question, as I can not get this last function to work properly.
It takes a string of digits, of any length, like "123456789" and converts it to a byte array which is the base-10 encoding.
So if we pass the above string "123456789" into the function, we should get a byte array back which would be:
0x75BCD15 -> the hex value for the above string.
I will be passing strings between 40 and 80 digits long. And I should mention I ported the code from c++, so made some changes to get it to compile.
It does produce a correct length byte array, but the hex values are never correct.
The function is...
byte[] DecodeRequestCode(string requestCode, int ResLen)
{
int Sum = 0;
int Digit, Aux, m;
byte[] result = new byte[17];
for (int i = 0; i < 7; i++)
{
Digit = requestCode[i] - '0';
Aux = Digit;
m = 0;
do
{
Aux += result[m] *10;
result[m++] = (byte) (Aux & 255);
Aux >>= 8;
}
while (m < ResLen);
Sum += Digit;
}
return result;
}
I will be extreamly gratefull if someone could find out what I am doing wrong, and if possible, how I would reverse it to write a function that will produce the string of digits from the byte array?
Thank you again,
Kind Regards,
Stephen
|
|
|
|
|
stephen.darling wrote: I will be extreamly gratefull if someone could find out what I am doing wrong
I think you have strange expectations. And you haven't explained why you need this sufficiently. I don't think even the C++ code you first showed will do what you now describe.
However, I'll take a shot of tequila and see what I can do.
|
|
|
|
|
Hi.
The code works and does this exactly as required.
It was simply reversing the bytes
Thank you again,
Regards,
Stephen
p.s. still looking for a function to reverse it and produce a long string of digits from the byte array produced above
|
|
|
|
|
If you're byte order is backwards, odds are you're running into an Endianness issue. If you're using the code I helped with yesterday, and you're expecting the bytes in a big-endian ordered array (sounds like you are), you'll need to test for it and reverse the array if needed.
byte[] data = BitConverter.GetBytes(combined);
if(BitConverter.IsLittleEndian) {
Array.Reverse(data);
}
If you're going to be converting the array back into an integer, you'll need to reverse it again since the system is looking for a little-endian byte order.
One minor suggestion - when you're talking hex values, always include the leading zeroes for the data types if the hex number doesn't fit perfectly (eg, 0x075BCD15 instead of 0x75BCD15).
|
|
|
|