|
Hi again! ok, i hope u don't get mad at me but...maybe i didn't explain my problem correctly(again). When you say "Well, if I understood you correctly you've got an event handler like this which is called in another thread (i.e. other than the thread that owns form1 and most likely runs the standard" i mean, the event handler is in FORM1 but the event is in another thread.
When you say "Therefore you need to make a cross-thread call if you want to do something with your UI from another thread" do you mean direct manipulations?Because i'm not changig things directly from the other thread, i call the event in that thread so that the handler in the FORM1(that has the control) creates the new form.Shouldn't his work? I'm completly lost :P
|
|
|
|
|
carlos_rocha wrote:
ok, i hope u don't get mad at me but...
No. Not yet.
carlos_rocha wrote:
i mean, the event handler is in FORM1 but the event is in another thread.
Well, at least I think I understood you correctly. Regarding your event handler: an event handler, no matter to which class it belongs, is ultimately nothing else than a piece of code. Let's say you start with thread A. A is your main thread. It creates the application message loop, a form and a second thread B. If this thread B wants to raise an event, it calls the delegates which were registered thru the appropriate event. Accordingly this delegate will be executed in thread B no matter that it was originally registered in thread A. So just because an object was created in thread X does not mean that every call of a method of the particular object will be automatically executed in thread X.
carlos_rocha wrote:
Because i'm not changig things directly from the other thread, i call the event in that thread so that the handler in the FORM1(that has the control) creates the new form.
Yeah, form1 creates the new form, but in the "wrong" thread (as I called it, thread B). So the "wrong" thread will be the owner of the new form instance.
carlos_rocha wrote:
Shouldn't his work?
Counter question: have you already tried to get it to run with Control.Invoke() ?
Best regards
Dennis
|
|
|
|
|
Man, you explained the problem very well!!! i'm sorry, i haven't tried the control.invoke() i will test now.Stay tuned (please)
|
|
|
|
|
Hi! You're the man. Control.Invoke() worked just fine. Before i use it i do a test using InvokeRequired(), if it gives out true it's because i'm not on the thread that initially created the form, so i call invoke().
Thank you very much.
|
|
|
|
|
Hi,
I was wondering if someone could tell me how to add an icon overlay to selected files? I was hoping I would be able to reference it such as...
SetIconOverlay("MyFile.txt", "myOverlay.ico") ' to set the overlay icon.
GetIconOverlay("MyFile.txt") ' to get the overlay icon.
RemIconOverlay("MyFile.txt") ' to remove the overlay icon.
Thank,
|
|
|
|
|
Hi Again,
Can anyone help please?
Thanks,
|
|
|
|
|
I am creating a control and would like to include a property which would act similar to the font property. I have succeeding in getting the ellipsis and '+' sign in the property area, and the custom editor works fine as a single user defined type.
When I try to make the property an array, I get syntax errors and can't get past defining the property as an array.
Does anyone have code where they developed a property similar to the font property (an array of user defined types using a custom editor)?
Thanks
|
|
|
|
|
I think I know the answer to your question and there a few steps you need to take. First is to create a class for a type converter. This is a generic type converter to support my custom controls forming custom textbox, panel and label controls that inherit from a base class called DHObjects.
<br />
Public Class DHTypeConverter<br />
Inherits TypeConverter<br />
<br />
Public Overloads Overrides Function GetPropertiesSupported(ByVal context As System.ComponentModel.ITypeDescriptorContext) As Boolean<br />
Return True<br />
End Function<br />
<br />
Public Overloads Overrides Function GetProperties(ByVal context As System.ComponentModel.ITypeDescriptorContext, ByVal value As Object, ByVal attributes() As System.Attribute) As System.ComponentModel.PropertyDescriptorCollection<br />
Return TypeDescriptor.GetProperties(GetType(DHObject))<br />
<br />
End Function<br />
End Class<br />
NEXT is to create your class of controls and then add your custom control to a class or usercontrol in the form of a property and add the attibutes that tell the property grid how to handle your custom type:
<br />
<TypeConverter(GetType(DHTypeConverter)), _<br />
DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)> _<br />
Property MoveBackButton() As DHButton<br />
Get<br />
Return m_MoveBackButton<br />
End Get<br />
Set(ByVal Value As DHButton)<br />
m_MoveBackButton = Value<br />
End Set<br />
End Property<br />
|
|
|
|
|
I have the typeconverter/class properties already included in my class, which works well until I try to make the property an array of user defined types (like the font property with multiple fonts, each font containing it's own set of properties).
|
|
|
|
|
Your question may be over my head. Maybe you should post the errors you are receiving. See if this helps though. This property presents an array of user types in the property grid. Of couse you would need a custom type converter to pretty it up.
<br />
Dim m_foobar() As Foobar = {New Foobar, New Foobar}<br />
<br />
Property MyFooBar() As Foobar() '<--Notice the bracktes<br />
Get<br />
Return m_foobar<br />
End Get<br />
Set(ByVal Value As Foobar())<br />
m_foobar = Value<br />
End Set<br />
End Property<br />
<br />
Public Class Foobar<br />
<br />
Dim m_Foo As TextBox<br />
<br />
Property FooTextBox() As TextBox<br />
Get<br />
Return m_Foo<br />
End Get<br />
Set(ByVal Value As TextBox)<br />
m_Foo = Value<br />
End Set<br />
End Property<br />
<br />
Overrides Function ToString() As String<br />
Return "(FooBar)"<br />
End Function<br />
|
|
|
|
|
Here i want to programattically use symantec antivirus and get notified when the scaning is over .For that i used a command line utility from symantec.com VPSCAN.exe.I created the process using createprocess api ie i supplied the path of VPSCAN.exe along with the files to scan,and i m waiting for the scan to complete usig waitforsingleobject api.But as soon as i execute program the tool starts and exits but scaning is going behind by SYmantec AV ver 8.0 ,so my problem is that how should i figure out when that scan is complete??? Pls help me out
S/W engineer
Hewlett-Packard
Bangalore
|
|
|
|
|
singhrajendra wrote:
For that i used a command line utility from symantec.com VPSCAN.exe.I created the process using createprocess api ie i supplied the path of VPSCAN.exe along with the files to scan,and i m waiting for the scan to complete usig waitforsingleobject api.
Sorry, I don't really get it. Do you want to re-write it in VB.NET or are you trying to use the Win32 API and you can't get it to work? In that case it would also help if you'd provide some excerpts from the source code you're using.
Best regards
Dennis
|
|
|
|
|
OK thanks for the reply . here is the excerpts form the src code::
Public Sub ExecuteAndWait(cmdline As String)
Dim c, d As Long
Dim x As Long
Dim snull As String
Dim b As SECURITY_ATTRIBUTES
Dim a As SECURITY_ATTRIBUTES
Dim pinfo As PROCESS_INFORMATION
Dim sinfo As STARTUPINFO
sinfo.cb = Len(sinfo)
' snull = "/U D:\My FTP\1"
x = CreateProcess("D:\ftp.exe", "\ /U D:\My FTP\1", ByVal 0&, ByVal 0&, 1&, NORMAL_PRIORITY_CLASS, ByVal 0&, snull, sinfo, pinfo)
x = WaitForSingleObject(pinfo.hProcess, INFINITE)
Do While x <> 0
If ret < 0 Then
Exit Sub
End If
DoEvents
Debug.Print x
x = WaitForSingleObject(pinfo.hProcess, _
INFINITE)
Loop
x = CloseHandle(pinfo.hProcess)
End Sub
So here what is actually happening is that thread VPSCAN.exe passes the cmd line args to anti virus and exits immediatedly .So i m looking any way to figure out when that scan is complete.I m using Symantec antivirus 8.0
S/W engineer
Hewlett-Packard
Bangalore
|
|
|
|
|
I think you're going to have to contact Symantec on this one. The Process you launch will pass it's parameters to the scanning engine, which is always running, then quit. Your WaitForSingleObject is watch that command line process that you launched, not the scanning engine.
The scanning engine, on the other hand, can't be watched using WaitForSingleObject because it never quits. I don't know if Symantec exposes any kind of API you could tap into. This is what your going to need to get a reliable interface into AntiVirus and why your going to have to look for help from Symantec.
RageInTheMachine9532
"...a pungent, ghastly, stinky piece of cheese!" -- The Roaming Gnome
|
|
|
|
|
need to make a change machine. I.E. if someone cashed in all their pennies nickles dimes and quarters i need to exchange it for tens, five, ones, etc... need assistance today (12/15/04) I know it's up to you guys to help or not but I'm desperate. please help. I don't know how to use the MOD.
|
|
|
|
|
|
it must be done in vb.net format. All I have to do is figure out a program that will allow me to exchange coins of any amount ot dollars.
|
|
|
|
|
I still dont understand that. need help writing the code anybody???? please
|
|
|
|
|
Why dont you start with what you've tried so far, as you cant honestly expect someone to just write all the code for you, surely?
Or is it overdue homework perchance?
|
|
|
|
|
its homework and it's due by 08:00pm est today. I've been too busy trying to get everything worked out with the funeral parlor that I havent had time to even think about this let alone try to even think period. hence the need for help.
|
|
|
|
|
Homework question right?
OK, without giving you the complete solution think about the following:
To work out the remainder as you have discovered yourself (i am assuming) you can use the Mod operator[^]. So if you have worked out there are 17829 pennies and you want to work out the number of £50 notes and the remainder:
Dim fiftyNotes As Integer = 17829 \ 5000<br />
Dim fiftyRemainder As Integer = 17829 Mod 5000
That should get you started.
Hope it helps
Tom
|
|
|
|
|
please explain a little bit more in detail...
your stating
dim intfiveDollars as integer = 500 \100
er not sure... I really dont understand this mod thing.
I have text boxes coming in from quarters, dimes, nickles, pennies.
and labled for output that show the relativity of $10, $5, $1, quarters, dimes, nickles and pennies.
so if i have 100 pennies I should show 1 in the $1.00 label or if I have 100 pennies 2 dimes and 3 nickles I should show 1 in the $1.00 label 1 in the quarter label and 2 in the nickle label.
|
|
|
|
|
please I need assistance only have 2 hours left. If i can just have someone get me started with this maybe I can finish it... but I'm totally lost..
|
|
|
|
|
If your totally lost at this point, you're totally screwed. Tom already gave you the starting point...
RageInTheMachine9532
"...a pungent, ghastly, stinky piece of cheese!" -- The Roaming Gnome
|
|
|
|
|
Mod operator gives u the remainder
suppose
if u are doing
10 mod 3 the output will be 1
10 mod 2 will give u 0
mod operator can be used only on integer datatype.
|
|
|
|