|
Just a guess, but did is the DPI setting the same on both machines? (Display Properties -> Settings -> Advanced -> General tab)
|
|
|
|
|
Nice guess Dave!! That was spot on....problem solved (whew!)
Care to reply to my topic "unloading assembly?"
|
|
|
|
|
..although how to solve the problem is not obvious. Anyone else figure out how to repond when the user changes the DPI setting?
|
|
|
|
|
Setting the form property autoscalemode to inherit seems to have helped this problem.
|
|
|
|
|
Hi..I'm working with VB6 & I need to know how to create a login window with including unique username & password.here is a code which is in a OK button in VB6 form.
Private Sub cmdOK_Click()
'check for correct password
If txtPassword = "123" Then
'place code to here to pass the
'success to the calling sub
'setting a global var is the easiest
LoginSucceeded = True
Me.Hide
frmMain.Show
Else
MsgBox "Invalid Password, try again!", , "Login"
txtPassword.SetFocus
SendKeys "{Home}+{End}"
End If
End Sub
There was only unique password in here & it can use any username. But i think if the username also unique,it'll be great.
And I also need to know how to create a seperate window to change those login details(username,password),with including 'current username','current password','new username','new password','confirm password' details.
Thanks a lot..
|
|
|
|
|
Hi......
To do so, you need to store your unique username and password to a file and each time user logs in, your code should check that file for correct username and password.
The code you are using will not change your username and password permanently.
So there is a better way to store username and password in a file or Database.
Gagan
|
|
|
|
|
Hi..
hmm..You are correct,But if I need to change my username or password later,how can I do it.I need to create a seperate window to do it.I think I have to connect that window also for those database or file..Am I correct??
If you can please send me some codes for create it as your idea..
Thanks a lot..
Thanking you !!!
~ Sathish Chandimal ~
|
|
|
|
|
Hi.....
yes....you can use a saperate window or you can use input box to change your username and password.But it should be connected to your file or database at that time.
Do you know how to connect database with program? If yes then you can easily change your username and password fields.
Gagan
|
|
|
|
|
Dear..
Now I hope to do my project using VB.NET & I earlier start it by VB6.I know how to connect ACCESS DB in VB6,but I don't know how to connect ACCESS Db in .NET & I know little bit about connecting SQL in .NET.So if you can kindly tell me how can I connect ACCESS or any other DB in .NET correctly.If you can also tell me where can I have more information about those codes,do you know any other reference items???
Thanks a lot Dear...
Thanking you !!!
~ Sathish Chandimal ~
|
|
|
|
|
|
Hi, I am working on a VB project which needs to locate certain devices which, apart from the response they provide to a broadcast, can not be identified at runtime as the application is to be used by an end user with no knowledge of network comms.
These devices, on receiving a broadcast message on port 20034, automatically send a UDP datagram back to the source IP, also on port 20034, Prior to TCP comms being initiated.
This datagram contains the MAC address, IP address, and other info such as subnet mask, gateway etc..
At runtime, there will be an unknown number of devices on the network, between 0 and 32 devices
The relevant code is all listed below, and functions as expected, However the problem I am having is that due to the blocking nature of .NET UDP, unless I have 32 devices on the network, the program will hang whilst waiting for a datagram.
To this end, I want to make this section run in a seperate thread, terminated after a preset time interval using a timer on the main thread
I will be adding each datagram to the index of a rectangular array, which must be passed from the background thread to the main thread.
The problem I am having is in passing this array back, if the thread (which will be an infinite loop) is terminated by a timer.
This is also my first attempt at multithreading, and, although I have done a large amount of reading now, I must confess I am still struggling.
Thanks in adavnce for any help received,
Regards, Chris
Declarations/imports:
Imports System.Net.Sockets
Imports System.Text
Imports System.IO
Imports System.Net
Dim receiveBytes As [Byte]()
Dim LenBytes As Long = 0
Dim ReceiveArray As [Byte] (,)
Main:
Private Function Go() As Array
Broadcast()
For n = 1 To 32
Listen()
If LenBytes > 160 Then
For m = 1 To LenBytes
ReceiveArray(n - 1, m - 1) = receiveBytes(m - 1)
Next m
End If
Next n
Return ReceiveArray
End Function
Send Broacast message:
Private Sub Broadcast()
Dim broadcaster As New UDPClient(CType(MainForm.Text_UDP_Port.Text,Integer))
Dim bytes(1024) As Byte
bytes = System.Text.Encoding.ASCII.GetBytes("BURNR")
broadcaster.send(bytes, bytes.Length, "255.255.255.255, CType(MainForm.Text_UDP_Port.Text, Integer))
broadcaster.Close
End Sub
Listen for a response:
Dim RemoteIPEndPoint As New System.Net.IPEndPoint(System.Net.IPAddress.Any, 20034)
Dim Listener As New UdpClient(20034)
receiveBytes = Listener.Receive(RemoteIPEndPoint)
LenBytes = UBound(receiveBytes) - LBound(receiveBytes) - 1
Listener.Close()
End Sub
|
|
|
|
|
First of all, I'll just make a disclaimer that I'm a C# programmer, so my code and references will be in C#; but, of course, you can do the same in VB.NET I am just not 100% on the syntax.
You should use the UdpClient.BeginReceive method, as it is asynchronous and will not prevent the program execution from proceeding. The idea is that you'll invoke UpdClient.BeginReceive() and then your program will keep going from the next line. On a separate thread BeginReceive will be waiting for incoming data. In the BeginReceive handler or callback (when data arrives) you'll process it and then call BeginReceive again to wait for another device. You can have the handler keep invoking BeginReceive until you've accepted 32 devices or whatever condition will indicate that you don't want to accept any more incoming UDP data. Also, since it sounds like you'll be using an array that will be accessed by 2 separate threads, you should use locking to have safe access to the array. In C#, locking can be accomplished with the lock keyword, not sure what the equivalent is in VB.NET. However, the idea is that you create a new object (I usually name it 'locker') whose only purpose is to control the locking and access to the cross thread item. Then, when accessing the array from inside the BeginReceive handler you'll lock the locker object and access the array, this will ensure that only that portion of code accesses the array. You'll do the same in the main thread to access the array. Here's a quick sample of some C# code I use; there are some private members and 2 public methods from a class that should give you the idea of how to use the BeginReceive method and locking on an object:
private UdpClient listeningClient = null;
private IPEndPoint localEndPoint = null;
private bool acceptingConnections = false;
private object locker = new object();
public void Start()
{
lock (locker)
{
acceptingConnections = true;
listeningClient = new UdpClient(localEndPoint);
listeningClient.BeginReceive(new AsyncCallback(ReceiveCallback), listeningClient);
}
}
private void ReceiveCallback(IAsyncResult ar)
{
UdpClient client = (UdpClient)ar.AsyncState;
IPEndPoint endPoint = new IPEndPoint(IPAddress.Any, 0);
byte[] receivedBytes = client.EndReceive(ar, ref endPoint);
if(acceptingConnections)
listeningClient.BeginReceive(new AsyncCallback(ReceiveCallback), listeningClient);
}
Keep It Simple Stupid! (KISS)
|
|
|
|
|
Thanks for the help
I ended up going pretty much along the lines you suggested, only I kept the blocking receive method.
I have the whole process in a different thread, and after each receive, it checks a flag to see if it should loop or end the thread.
From the main thread, to stop the process, i simply set the flag and then send a udp message from the main thread which is filtered out in the receive thread
Thanks again for getting me on the right lines, Chris
|
|
|
|
|
how make vb directory treeview checkbox with vb 6....?thank...
24
|
|
|
|
|
imka24 wrote: how make vb directory treeview checkbox with vb 6....?thank...
IIRC, there is a "Checkbox" property in the regular VB6 TreeView control.
All Christian said in response to your earlier post is still valid.
|
|
|
|
|
For sending and receiving ARP request to all connected PC in the LAN Network
|
|
|
|
|
Wrong site. Try rentacoder.com.
Bob
Ashfield Consultants Ltd
|
|
|
|
|
Sure - email me so I can give you my paypal. I'll do this for $1500.
Christian Graus
Driven to the arms of OSX by Vista.
|
|
|
|
|
Christian Graus wrote: Sure - email me so I can give you my paypal. I'll do this for $1500.
Ill do it for $1400 and a cookie.
Chocolate chip.
|
|
|
|
|
ROTFL !!!
Christian Graus
Driven to the arms of OSX by Vista.
|
|
|
|
|
This is probably more of a beginner issue, but Im trying to populate a treeview based off the Northwind Database. The Top level is a list of countries, second level is a list of customers from that country, and 3rd level is supposed to be orderids from that country but it isnt populating. I know its stopping at my 'FillOrderIDs' but I cant seem to figure out why.
I appreciate any advice,
Private Sub FillCountries()
Dim tcountry As String
Dim tnode As TreeNode
Dim tCountryTable As NorthwindDataSet.CountriesDataTable
tCountryTable = Me.CountriesTableAdapter.GetCountriesData
For Each trow As NorthwindDataSet.CountriesRow In tCountryTable
tcountry = trow.Country
tnode = New TreeNode
tnode.Name = "Country"
tnode.Text = tcountry
Me.TreeView1.TopNode.Nodes.Add(tnode)
FillCompanyNames(tcountry, tnode)
Next
End Sub
Private Sub FillCompanyNames(ByVal country As String, ByVal parentnode As TreeNode)
Dim tCompany As String
Dim tnode As TreeNode
Dim CustTable As NorthwindDataSet.CompanyNamesDataTable
CustTable = Me.CompanyNamesTableAdapter.GetCustomersByCountry(country)
For Each trow As NorthwindDataSet.CompanyNamesRow In CustTable
tCompany = trow.CompanyName
tnode = New TreeNode
tnode.Name = "CompanyName"
tnode.Text = trow.CompanyName
tnode.Tag = trow.CompanyName
parentnode.Nodes.Add(tnode)
FillOrderIDs(tCompany, tnode)
Next
End Sub
Private Sub FillOrderIDs(ByVal orderid As String, ByVal parentnode As TreeNode)
Dim tnode As TreeNode
Dim OrdTable As NorthwindDataSet.OrderIdsDataTable
OrdTable = Me.OrderIdsTableAdapter.GetOrderIds(CompanyName)
For Each trow As NorthwindDataSet.OrderIdsRow In OrdTable
tnode = New TreeNode
tnode.Name = "OrderID"
tnode.Text = trow.OrderID
tnode.Tag = trow.OrderID
parentnode.Nodes.Add(tnode)
Next
End Sub
Private Sub btnDisplay_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDisplay.Click
TreeView1.Nodes.Add("Countries")
FillCountries()
End Sub
|
|
|
|
|
I have compiled a release version of a DLL and installed the .msi on my computer and the DLL resides in C:\Program Files\ etc etc
In another project I have set a reference to the compiled and installed DLL - not to the DLLs in Bin from the DLL project.
Now I am single stepping through a routine in the new project and when I hit the call to the compiled DLL, it brings up a code page from the project for that DLL. Is this normal? How can it happen?
I am very confused about this as surely if I am referencing a DLL in c:\Program Files\etc, how can it be showing me a code page from C:\Work\DasWork\etc etc?
What would happen if I gave this DLL to someone else? What would they see?
|
|
|
|
|
This is because Visual Studio still knows where the source for the project is.
TheComputerMan wrote: What would happen if I gave this DLL to someone else? What would they see?
Nothing. The debugger would step right over the method calls.
|
|
|
|
|
Thanks Dave. Had me worried for a moment!
|
|
|
|
|
Hi,
your exe file (whether managed or unmanaged, debug or release build) contains the absolute path of your PDB file, and that file contains the absolute paths to all the source files.
So just moving your EXE to another location on the same machine does not hide the internal information; you would have to (re)move the PDB file, or switch to another PC.
|
|
|
|
|