How to pick an object before operator execution? (object picker/pointer ux?)
Update method on pointer property

Not sure if this is a bit of an XY Problem
In as much as agree that invoking the filebrowser is a way to select the filepath before executing the operator  it is generally displaying other options (often for import export) while it runs modally.
To simply select a filepath before running could achieve same with
def foo(self, context):
    bpy.ops.export_scene.foo(filepath=self.filepath)

Foo.filepath = StringProperty(subtype='FILE_PATH`, update=foo)

So similarly, can &quot;do your thang&quot; when the object is selected via the eyedropper.
Object selection box with eyedropper
import bpy
from bpy.props import PointerProperty

def poll(self, obj):
    return obj.type == 'MESH'

def update(self, context):
    # self is scene (or self.id_data if in prop group)
    ob = self.prop
    if ob is not None:
        print(f&quot;Run operator or do something to {ob.name}&quot;)
        self.prop = None # reset?
    
class TEST_PT_layout_panel(bpy.types.Panel):
    bl_label = &quot;Prop Panels&quot;
    bl_category = &quot;Test Panel&quot;
    bl_space_type = 'PROPERTIES'
    bl_region_type = 'WINDOW'
    bl_context = &quot;scene&quot;

    def draw(self, context):
        scene = context.scene
        layout = self.layout
        
        col = layout.column()
        col.prop(scene, &quot;prop&quot;)


def register():
    bpy.types.Scene.prop = PointerProperty(
            type=bpy.types.Object,
            poll=poll,
            update=update)
    bpy.utils.register_class(TEST_PT_layout_panel)


def unregister():
    bpy.utils.unregister_class(TEST_PT_layout_panel)
    
if __name__ == &quot;__main__&quot;:
    register()

Note: have reset the pointer to none after each pick for way of example. Will prompt the &quot;No value set warning in UI.