It appears that you have solved this problem. For the record, I created a report, saved it, opened the FRX exclusively in the current work area and executed Sys(1037,1). It worked as expected. As to your other query... is this what you are looking for?
loPD = newobject("mscomdlg.commondialog")
loPD.ShowPrinter()